gpt4 book ai didi

c# - 在 C# 中的 foreach 循环中更新结构

转载 作者:太空狗 更新时间:2023-10-29 19:55:25 24 4
gpt4 key购买 nike

我有这段代码(C#):

using System.Collections.Generic;

namespace ConsoleApplication1
{
public struct Thing
{
public string Name;
}

class Program
{
static void Main(string[] args)
{
List<Thing> things = new List<Thing>();
foreach (Thing t in things) // for each file
{
t.Name = "xxx";
}
}
}
}

它不会编译。
错误是:

Cannot modify members of 't' because it is a 'foreach iteration variable'

但是,如果我将 Thing 更改为 class 而不是 struct,它会编译。

有人能解释一下这是怎么回事吗?

最佳答案

或多或少如其所说,编译器不会让您更改(部分)foreach 中的循环变量。

只需使用:

for(int i = 0; i < things.Count; i+= 1) //  for each file
{
things[i].Name = "xxx";
}

它在 Thing 是一个类时起作用,因为那时你的循环变量是一个引用,你只对引用的对象进行更改,而不是对引用本身进行更改。

关于c# - 在 C# 中的 foreach 循环中更新结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1612584/

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