在这段代码片段中
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
实现了非通用的IEnumerable
和ICollection
接口(interface),它们不是像这样强类型化的,但是它的Item
属性是强类型的,并返回GridViewRow
。微软不错!
关于asp.net - 为什么ASP.NET GridView.Rows属性不能使用类型推断(var)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1098045/