【发布时间】:2016-01-02 20:16:05
【问题描述】:
我有点困惑。结构或多或少是在堆栈上构造的值类型,因此具有简单的生命周期。
使用结构体构建列表时,不能直接修改,因为返回值是一个副本,实际上不会修改列表中存储的项目。
我的困惑来了:为什么我不能直接更改列表中的结构项,但我可以直接访问和修改基值类型(int、float 等...)?
这行得通:
List<int> foobar1 = new List<int>();
foobar1.Add(1);
foobar1[0] = 2;
这不是:
public struct foo
{
public int bar;
}
...
List<foo> foobar2 = new List<foo>();
foobar2.Add(new foo());
foobar2[0].bar = 2;
【问题讨论】:
标签: c# list collections value-type