gì không được đề cập trong các câu trả lời trên là ý định - tại sao bạn thực hiện chuyển đổi, và (quan trọng hơn) những gì xảy ra trên đường sau khi chuyển đổi ?
Ví dụ, tôi đã nhìn thấy mã tương tự như một số sau lần:
if ((foo as SomeType).SomeMethod()) { /* ... */ }
Điều này có thể được so sánh với phiên bản đúc sử dụng:
if (((SomeType) foo).SomeMethod()) { /* ... */ }
Vì vậy, cái nào trong số này tốt hơn?
Dàn diễn viên là.
Sử dụng as
sẽ dẫn đến NullReferenceException
nếu chuyển đổi không thành công.
Sử dụng dàn diễn viên sẽ dẫn đến InvalidCastException
nếu chuyển đổi không thành công.
Bây giờ, hãy cho tôi biết, đó là ngoại lệ hữu ích hơn để gỡ lỗi? A NullReferenceException
, có thể được sản xuất bởi gần như bất kỳ thứ gì, hoặc InvalidCastException
, cho bạn biết điều gì thực sự đã xảy ra?
Như vậy, chỉ sử dụng as
nếu việc chuyển đổi là thực tùy chọn (có nghĩa là có phải được một tấm séc null
trước khi sử dụng biến). Nếu không, sử dụng một diễn viên, do đó làm cho ý định của bạn rõ ràng hơn.
Hãy để tôi cập nhật mã của tôi Jon với loại tham chiếu. – Xaisoft
Không cần nhiều - Tôi đã giải thích thêm trong câu trả lời của tôi bây giờ :) –
Cảm ơn rất nhiều, tôi thực sự đã cập nhật nó với GridView, nhưng câu trả lời của bạn là đủ tốt. – Xaisoft