在这段代码片段中

foreach (var row in grid.Rows) { }

行的类型推断为Object而不是GridViewRow。我必须明确声明要与GridViewRow一起使用的类型:
foreach (GridViewRow row in grid.Rows) { }

GridView.Rows在集合“返回一个包含GridViewRowCollection中所有GridViewRow对象的枚举数”上返回一个GridViewRowCollection和GetEnumerator。如果我按索引访问集合中的一行
var row = grid.Rows[0];

类型是正确推断的。为什么编译器不能在foreach声明中推断出row的类型?

编辑添加:有趣的答复,我认为没有寻找明显的问题。 ListView.Items实现IList<ListViewDataItem>,所以这对我来说似乎是个疏忽。

最佳答案

因为GridViewRowCollection实现了非通用的IEnumerableICollection接口(interface),它们不是像这样强类型化的,但是它的Item属性是强类型的,并返回GridViewRow。微软不错!

关于asp.net - 为什么ASP.NET GridView.Rows属性不能使用类型推断(var)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1098045/

10-11 01:51