可能重复:
为什么 var 在“foreach (var row in table.Rows)”中计算为 System.Object?
今天我很惊讶地发现了以下内容......
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"]);
}
这里发生了什么?
这是类型推断失败吗?如果是这样,是什么原因造成的?
或者它是定义行为的一部分还是var
?如果是这样,为什么?
我认为var
你可以在变量声明/初始化中的任何地方使用它而不改变行为。