c# - 结构的公共(public)变量没有改变

标签 c# list debugging reference

<分区>

好的,我有一个 List<SpecialTile>称为 SpecialTiles其中 SpecialTile是一个结构。 SpecialTile 的属性之一struct 是一个名为 Active 的公共(public) bool 值我正在尝试更改,但由于某种原因它不起作用。我不确定它是否相关,但该列表由另一个类的实例拥有。这是我通过调试器运行它时的图片:

Impossible?

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

Mgen.SpecialTiles[ESV.editThis].Active = !Mgen.SpecialTiles[ESV.editThis].Active;

但它告诉我“Active”不是一个变量。如您所见,它不允许我以这种方式修改值:

Still Impossible?

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

我是否遗漏了有关 List 变量的信息?即使它不应该修改该值,为什么调试器会将“Active”列为 false 然后将其翻转回 true?

谢谢!

最佳答案

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

如果您将 SpecialData 更改为一个类,这应该可以解决您的问题。

关于c# - 结构的公共(public)变量没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127088/

相关文章:

c# - 从 C# 程序运行 C# 编译器

c# - 将位图保存为 32bpp 不保持透明度

c# - 慢 DeterminePostBackMode()

Python 列表过滤 : remove subsets from list of lists

c# - 选择具有多个 IP 时 HTTP 请求使用的 IP (.NET)

python - 如何在 python 中创建嵌套列表?

list - Haskell:有没有一种惯用的方式将列表中的每个项目插入到它自己的列表中?

javascript - 如何调试javascript程序

mysql:错误:使用了选项 'debug=d:t:o,/var/log/list.log',但已禁用

visual-studio - 顶级 Visual Studio 调试工具/功能