struct的公共变量没有改变

Sup*_*ggy 2 c# debugging reference list

好的,我有一个List<SpecialTile>叫做SpecialTileswhere SpecialTile的结构.SpecialTile结构的一个属性是一个名为Active我正在尝试更改的公共布尔值,但由于某种原因它不起作用.我不确定它是否相关,但列表由另一个类的实例拥有.这是我在调试器中运行时的图片:

不可能?

所以无论如何,我遇到了这个问题,因为最初我试图使用代码行

Mgen.SpecialTiles[ESV.editThis].Active = !Mgen.SpecialTiles[ESV.editThis].Active;
Run Code Online (Sandbox Code Playgroud)

但它告诉我"活跃"并非变数.正如你所看到的,它不会让我以这种方式修改价值:

仍然不可能吗?

所以我假设我必须通过方法修改值.但显然这也不起作用?

我错过了List变量的一些内容吗?即使它不应该修改该值,为什么调试器列出"Active"为false然后将其翻转为true?

谢谢!

Eri*_*rik 5

这是结构的问题.调用列表索引器会MGen.SpecialTiles[x]返回存储在列表中的结构的副本,因此您在该结构上调用的任何方法都将对该副本进行操作.由于副本是临时的,因此该方法所做的更改最终会被丢弃.

如果您更改SpecialData为课程,则应解决您的问题.

  • 除了'SpecialTiles`是一个数组.一些角落案件. (2认同)