6
Quando si cerca di rispondere this question, ho scoperto i seguenti:Casting e Linq Fusioni <T>()
string s = "test";
var result1 = s.Select(c => (ushort)c); // works fine
var result2 = s.Cast<ushort>(); // throws an invalid cast exception
Perché Cast<T>()
falliscono qui? Qual è la differenza?
Grazie Martin. Interessante. Quindi Cast dovrebbe probabilmente essere evitato in ogni caso per la penalità relativa alle prestazioni del pugilato. Sono sorpreso MSDN non menziona questo ovunque (che ho potuto trovare, comunque). –
fearofawhackplanet
'Cast' è destinato esclusivamente all'utilizzo di un 'IEnumerable' fino al livello di un' IEnumerable ', dove sono definiti tutti gli altri operatori LINQ. Prendendo un 'IEnumerable ' e convertendolo in un 'IEnumerable ' è una proiezione, che è fatta da 'Select'. Il fatto che 'Cast' sia possibile anche su un' IEnumerable 'è semplicemente perché' IEnumerable 'eredita da' IEnumerable' - nessun altro motivo. –