gpt4 book ai didi

c# - 为什么必须在 foreach C# 中显式声明 ListItem

转载 作者:行者123 更新时间:2023-11-30 13:30:44 24 4
gpt4 key购买 nike

如果 listControl 是一个 ListControl 对象,比如 DropDownList,我很困惑为什么这段代码不能编译:

foreach (var item in listControl.Items) {
item.Value = string.empty;
}

编译器将item 视为object 类型。如果我用 ListItem 替换 var 并显式声明变量,它就会起作用。 Items 属性是一个 ListItemCollection,它实现了 IEnumerable。编译器难道不能分辨出集合中的对象属于 ListItem 类型吗?

最佳答案

这是一种奇怪的行为,因为正如您所指出的,ListItemCollectionListItem 的集合秒。这似乎与这是在 C# 支持泛型之前实现的事实有关。所以它实现了IEnumerable而不是 IEnumerable<ListItem> ,并且无法确定正确的类型。

我建议用这种方式重写你的循环:

foreach (ListItem item in listControl.Items) {
item.Value = string.empty;
}

查看 this question了解更多信息。

关于c# - 为什么必须在 foreach C# 中显式声明 ListItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com