gpt4 book ai didi

c# - foreach() 是否按引用迭代?

转载 作者:IT王子 更新时间:2023-10-29 03:43:44 24 4
gpt4 key购买 nike

考虑一下:

List<MyClass> obj_list = get_the_list();
foreach( MyClass obj in obj_list )
{
obj.property = 42;
}

obj 是否是对列表中相应对象的引用,以便当我更改属性时,一旦在某处构造,更改将保留在对象实例中?

最佳答案

是的,obj 是对集合中当前对象的引用(假设 MyClass 实际上是一个类)。如果您通过引用更改任何属性,您就是在更改对象,就像您期望的那样。

但是请注意,您不能更改变量 obj 本身,因为它是迭代变量。如果你尝试,你会得到一个编译错误。这意味着您不能将其置空,并且如果您正在迭代值类型,则不能修改任何成员,因为那样会更改值。

C# 语言规范声明 (8.8.4)

"The iteration variable corresponds to a read-only local variable with a scope that extends over the embedded statement."

关于c# - foreach() 是否按引用迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1538301/

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