C# 数据集 foreach

C# DataSet foreach

我正在使用 DataSet,当我使用 foreach 循环迭代列时,我无法获得 ColumnName(如果使用 var 关键字):

例如

DataTable table1 = new DataTable("patients");
table1.Columns.Add("name");
table1.Columns.Add("id");
table1.Rows.Add("sam", 1);
table1.Rows.Add("mark", 2);

与使用 foreach 相比:

但是如果明确定义了foreach语句:

一切正常。 我知道 foreach 是 Enumarator 的语法糖。 它是某种遗留和缺乏泛型吗?

Is it some kind of legacy and lack of Generics?

是的。此代码是在泛型存在之前用 C# 1.0 编写的。

DataTable.Columns 是一个 DataColumnCollection。 DataColumnCollection 实现 IEnumerable,而不是 IEnumerable。 foreach 语句对您指定的任何类型执行转换。 var指定了枚举器方法returns(本例为Object)。