6
Lorsque vous essayez de répondre this question, j'ai découvert ce qui suit:Moulage et LINQ Moulage <T>()
string s = "test";
var result1 = s.Select(c => (ushort)c); // works fine
var result2 = s.Cast<ushort>(); // throws an invalid cast exception
Pourquoi Cast<T>()
échouent ici? Quelle est la différence?
Merci Martin. C'est intéressant. Donc Cast devrait probablement être évité de toute façon pour la pénalité de performance inhérente à la boxe. Je suis surpris MSDN ne mentionne nulle part (que j'ai pu trouver, de toute façon). –
fearofawhackplanet
'Cast' est uniquement destiné à être utilisé pour amener 'IEnumerable' au niveau d'un' IEnumerable ', où tous les autres opérateurs LINQ sont définis. Prendre un 'IEnumerable ' et le convertir en un 'IEnumerable ' est une projection, qui est faite par 'Select'. Le fait que 'Cast' est même possible sur un' IEnumerable 'est simplement parce que' IEnumerable 'hérite de' IEnumerable' - aucune autre raison. –