6
Khi cố gắng để trả lời this question, tôi phát hiện ra những điều sau đây:Đúc và LINQ Cast <T>()
string s = "test";
var result1 = s.Select(c => (ushort)c); // works fine
var result2 = s.Cast<ushort>(); // throws an invalid cast exception
Tại sao Cast<T>()
thất bại ở đây? Có gì khác biệt?
Cảm ơn Martin. Nó thật thú vị. Vì vậy, Cast có lẽ nên tránh dù sao cho hiệu suất boxing vốn có. Tôi ngạc nhiên MSDN không đề cập đến bất cứ nơi nào (mà tôi có thể tìm thấy, anyway). –
fearofawhackplanet
'Cast' chỉ được sử dụng để đưa một 'IEnumerable' lên đến mức của một' IEnumerable ', nơi tất cả các toán tử LINQ khác được định nghĩa. Lấy một 'IEnumerable 'và chuyển nó thành một' IEnumerable 'là một phép chiếu, được thực hiện bằng' Chọn'. Thực tế là 'Cast' thậm chí có thể trên một' IEnumerable 'chỉ đơn thuần là vì' IEnumerable 'kế thừa từ 'IEnumerable' - không có lý do nào khác. –