Quando entro questo foreach
affermazione ...Perché var valuta su System.Object in "foreach (var row in table.Rows)"?
foreach (var row in table.Rows)
... la descrizione per var dice class System.Object
Sono confuso perché non è class System.Data.DataRow
.
(Nel caso in cui vi state chiedendo, sì, ho using System.Data
nella parte superiore del mio file di codice.)
Se io dichiaro il tipo in modo esplicito, come nel ...
foreach (DataRow row in table.Rows)
... funziona senza errori.
Anche se lo faccio ...
var numbers = new int[] { 1, 2, 3 };
foreach (var number in numbers)
... var viene valutato come struct System.Int32
. Quindi, il problema non è che var
non funzioni in una clausola foreach
.
Quindi, c'è qualcosa di strano in DataRowCollection
dove gli elementi non valutano automaticamente DataRow
. Ma non riesco a capire di cosa si tratta. Qualcuno ha una spiegazione?
Aggiornamento
Ero veramente indeciso che rispondono a segnare (Codeka e Oliver) ... Alla fine, ho deciso di marcare Codeka di perché risponde veramente mia domanda, ma Oliver risponde alla domanda che avrei dovuto chiedere :)
grande punto! +1 –
Ama questa risposta. +1 – wonea