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

kad81

我很困惑为什么如果listControl是ListControl对象(例如DropDownList),则此代码将无法编译

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

编译器认为item是类型object如果我替换varListItem它会工作,显式声明变量。Items属性是ListItemCollection实现的IEnumerable编译器难道不应该知道集合中的对象是类型ListItem吗?

乔纳森·伍德

正如您所指出的那样,这是一个奇怪的行为,因为它ListItemCollection是的集合ListItem这似乎与以下事实有关:该事实是在C#支持泛型之前实现的。因此,它实现的IEnumerable不是IEnumerable<ListItem>,而是无法确定正确的类型。

我建议这样重写循环:

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

查看此问题以获取其他信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么必须在C ++类定义中声明方法?

来自分类Dev

为什么必须在最终声明中声明列表

来自分类Dev

为什么必须在子类中重新声明PoolDictionaries?

来自分类Dev

为什么必须在子类中重新声明PoolDictionaries?

来自分类Dev

ReactiveUI:使用TestScheduler时,为什么必须在“ ... Throttle ...”中显式指定调度程序

来自分类Dev

为什么必须在文件底部声明模块的导出?

来自分类Dev

为什么必须在onChanged(在Flutter中)中调用didChange?

来自分类Dev

为什么我必须在onLoaderReset中交换swapCursor(null)?

来自分类Dev

为什么必须在onCreate中初始化对象?

来自分类Dev

为什么必须在类中调用_internal()?

来自分类Dev

为什么方法varargs必须在Java的单独块中?

来自分类Dev

为什么我必须在onLoaderReset中交换swapCursor(null)?

来自分类Dev

为什么必须在function()中包含对函数的调用

来自分类Dev

为什么必须在此C ++模板中指定类型?

来自分类Dev

2 维数组。为什么我必须在 C 中声明列的大小

来自分类Dev

为什么我们必须在Java脚本(Razor)中对C#代码使用引号

来自分类Dev

为什么必须在catch块中的throw语句之前必须返回return语句

来自分类Dev

为什么必须在模板中每个函数上方声明模板?

来自分类Dev

为什么必须在Game1类(XNA)中声明GraphicsDeviceManager?

来自分类Dev

为什么必须在模板中每个函数上方声明模板?

来自分类Dev

为什么必须显式声明嵌套类型?

来自分类Dev

为什么无参数结构构造函数必须在C#6中公开?

来自分类Dev

为什么必须在使用每个函数的每个函数之前声明一个模板?

来自分类Dev

为什么我们必须在代码的顶部声明一个包?

来自分类Dev

为什么必须在分配变量之前将其声明为全局变量?

来自分类Dev

为什么必须在if语句的范围之外声明变量才能存在?

来自分类Dev

为什么我必须在这一行声明类型

来自分类Dev

为什么我们必须在代码的顶部声明一个包?

来自分类Dev

为什么在Mingw中设置sdl时必须在主要函数中传递参数?

Related 相关文章

  1. 1

    为什么必须在C ++类定义中声明方法?

  2. 2

    为什么必须在最终声明中声明列表

  3. 3

    为什么必须在子类中重新声明PoolDictionaries?

  4. 4

    为什么必须在子类中重新声明PoolDictionaries?

  5. 5

    ReactiveUI:使用TestScheduler时,为什么必须在“ ... Throttle ...”中显式指定调度程序

  6. 6

    为什么必须在文件底部声明模块的导出?

  7. 7

    为什么必须在onChanged(在Flutter中)中调用didChange?

  8. 8

    为什么我必须在onLoaderReset中交换swapCursor(null)?

  9. 9

    为什么必须在onCreate中初始化对象?

  10. 10

    为什么必须在类中调用_internal()?

  11. 11

    为什么方法varargs必须在Java的单独块中?

  12. 12

    为什么我必须在onLoaderReset中交换swapCursor(null)?

  13. 13

    为什么必须在function()中包含对函数的调用

  14. 14

    为什么必须在此C ++模板中指定类型?

  15. 15

    2 维数组。为什么我必须在 C 中声明列的大小

  16. 16

    为什么我们必须在Java脚本(Razor)中对C#代码使用引号

  17. 17

    为什么必须在catch块中的throw语句之前必须返回return语句

  18. 18

    为什么必须在模板中每个函数上方声明模板?

  19. 19

    为什么必须在Game1类(XNA)中声明GraphicsDeviceManager?

  20. 20

    为什么必须在模板中每个函数上方声明模板?

  21. 21

    为什么必须显式声明嵌套类型?

  22. 22

    为什么无参数结构构造函数必须在C#6中公开?

  23. 23

    为什么必须在使用每个函数的每个函数之前声明一个模板?

  24. 24

    为什么我们必须在代码的顶部声明一个包?

  25. 25

    为什么必须在分配变量之前将其声明为全局变量?

  26. 26

    为什么必须在if语句的范围之外声明变量才能存在?

  27. 27

    为什么我必须在这一行声明类型

  28. 28

    为什么我们必须在代码的顶部声明一个包?

  29. 29

    为什么在Mingw中设置sdl时必须在主要函数中传递参数?

热门标签

归档