为什么必须在foreach循环中显式声明GridViewRow的类型

时间:2017-02-17 17:24:56

标签: c# asp.net

在Visual Studio 2015(.NET 4.5,ASP.NET C#)中,以下编译并运行:

foreach (GridViewRow row in gridView.Rows)
{
    Thread.Sleep(row.Cells.Count);
}

但这不是(Cells不是一个有效的方法):

foreach (var row in gvEdit.Rows)
{
    Thread.Sleep(row.Cells.Count);
}

这是var的限制吗?我不介意明确地输入它,我只是希望它能与var一起使用。

1 个答案:

答案 0 :(得分:4)

因为RowsGridViewRowCollection,它实现了ICollectionIEnumerable,而不是通用版本ICollection<T>IEnumerable<T>。这是从通用前的日子开始的。

This from Eric Lippertforeach的工作原理增加了一些背景知识。