Olası Çoğalt: Doğrusu şaşırdı
Why does var evaluate to System.Object in “foreach (var row in table.Rows)”?"var" tür kesmesi
....
SqlDataReader reader = cmd.ExecuteReader();
DataTable schemaTable = reader.GetSchemaTable();
// the following compiles correctly
foreach (DataRow field in schemaTable.Rows)
{
Console.WriteLine(field["ColumnName"]);
}
// the following does not compile as 'var' is of type 'object'
foreach (var field in schemaTable.Rows)
{
// Error: Cannot apply indexing with [] to an expression of type 'object'
Console.WriteLine(field["ColumnName"]);
}
Ne oluyor şu bugün keşfetti burada?
Bu bir tür çıkarsama hatası mı? Ve eğer öyleyse, ne sebep olur?
Veya tanımlı davranışların bir parçası mı yoksa var
mu? Ve eğer öyleyse, neden?
var
fikrini, davranışını değiştirmeden, herhangi bir değişken bildiriminde/ilklendirmesinde kullanabilirsiniz.
'DataRowCollection.GetEnumerator()', 'IEnumerator' döndürür. IEnumerator.Current 'türü' object' türüdür. –
[tam çift soru] (http://stackoverflow.com/questions/2325777/why-cant-i-do-foreach-var-item-in-datatable-rows) Temel olarak Satırlar bir "DataRowCollection", yani derleyici 'Nesne' toplar, 'DataRow' – Axarydax