Tôi biết .. Tôi biết ... Hiệu suất không phải là mối quan tâm chính ở đây, nhưng chỉ cho sự tò mò, những gì là tốt hơn?Điều gì là tốt hơn: int.TryParse hoặc thử {int.Parse()} bắt
bool parsed = int.TryParse(string, out num);
if (parsed)
...
HOẶC
try {
int.Parse(string);
}
catch() {
do something...
}
Trong khi tôi đồng ý với lực đẩy chung rằng ngữ cảnh là vua, tôi muốn nói rằng TryParse là * hầu như luôn luôn * tốt hơn, nó nhiều hơn một sở thích cá nhân chủ quan cao. Counterexample của bạn (phân biệt các ngoại lệ khác nhau có thể được ném) là khá bất thường, và có lẽ sẽ được mã hóa tốt hơn với một khối catch cho mỗi loại ngoại lệ hơn là bắt tất cả. – Joe
@Joe: vâng, nếu bạn muốn phân biệt giữa các loại ngoại lệ khác nhau, bất cứ điều gì khác hơn là khối bắt cụ thể sẽ có vẻ rất kỳ quặc. Câu trả lời của tôi nhằm thảo luận về 'Parse' so với' TryParse' thay vì các mẫu mã cụ thể trong câu hỏi. Như tôi đã đề cập ở đâu đó trong các bình luận, tôi đồng ý rằng 'TryParse' là * hầu như luôn luôn * cách tốt hơn để đi, nhưng từ khóa là" gần như ", không phải" luôn luôn ". –
@Joe: Tôi đã đưa ra lý lẽ đó. Xem trao đổi nhận xét cho câu hỏi ban đầu. Quyền của Fredrik về những tuyên bố tuyệt đối không bao giờ đúng. (OMG một nghịch lý!) –