gpt4 book ai didi

c# - 为什么我们不能分配一个 foreach 迭代变量,而我们可以用访问器完全修改它?

转载 作者:IT王子 更新时间:2023-10-29 03:52:59 31 4
gpt4 key购买 nike

我只是对此感到好奇:以下代码无法编译,因为我们无法修改 foreach 迭代变量:

        foreach (var item in MyObjectList)
{
item = Value;
}

但以下将编译并运行:

        foreach (var item in MyObjectList)
{
item.Value = Value;
}

为什么第一个无效,而第二个可以在下面做同样的事情(我正在为此搜索正确的英文表达,但我不记得了。在...之下?^^)

最佳答案

foreach 是一个只读迭代器,动态迭代实现 IEnumerable 的类,foreach 中的每个循环都会调用 IEnumerable 来获取下一个项目,您拥有的项目是一个只读引用,您不能重新分配它,但是只需调用 item.Value 即可访问它并为读/写属性分配一些值,但项目的引用仍然是只读引用。

关于c# - 为什么我们不能分配一个 foreach 迭代变量,而我们可以用访问器完全修改它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7838079/

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