C# 3.0 引入了var
关键字。编译后,编译器将为您插入正确的类型。这意味着它甚至可以在 2.0 运行时上运行。到现在为止还挺好。但是前几天我发现了一个案例,var
关键字将被替换为只是对象,因此不够具体。假设你有类似的东西:
var data = AdoMD.GetData(...); // GetData returns a DataTable
foreach (var row in data.Rows)
{
string blah = (string)row[0]; // it fails since it's of type object
}
当我尝试使用行时,IntelliSense和编译器都告诉我它是对象类型。data.Rows
是类型System.Data.DataRowCollection
。以下作品:
var data = AdoMD.GetData(...); // GetData returns a DataTable
foreach (DataRow row in data.Rows)
{
string blah = (string)row[0]; // works since it now has the right type
}
这不是关于 var 使用的问题,这里有一个线程。
我正在使用 Visual Studio 2008 SP1 顺便说一句。
编辑:现在附上正确的代码。