小编Bob*_*nes的帖子

结构的列表和数组值与变量

我正在尝试理解/调和我对使用List和Arrays进行链接时C#结构如何运作的理解.我在本文的结构类型数组的性能中遵循了Eric的解释

但我更进一步.

struct Foo { public int A; public int B; public Foo[] ChildFoos; }

Foo parentFoo = new Foo();
parentFoo.ChildFoos = new Foo[1];
parentFoo.ChildFoos[0] = new Foo();

List<Foo> list = new List<Foo>();
list.Add(parentFoo);
Run Code Online (Sandbox Code Playgroud)

但是当您链接呼叫时,行为会发生变化.list [0]应该返回一个值(不是变量),其中ChildFoos [0]应该返回一个变量.

list[0].ChildFoos[0].A = 4545;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,似乎正在发生的事情是list [0]被视为变量而不是值.ChildFoos [0] .A在List中的parentFoo中维护它的新值.这怎么可能?

将此与尝试在不能编译的父Foo结构上设置A进行比较.

list[0].A = 877;
Run Code Online (Sandbox Code Playgroud)

这不会编译

c# arrays struct

5
推荐指数
1
解决办法
80
查看次数

标签 统计

arrays ×1

c# ×1

struct ×1