Tag: 可变

并行应用程序的Mutable与Immutable

在我写的应用程序中,我需要编写许多基类型,这很可能是不可变的。 但我想知道可变类型在并行应用程序中如何与不可变类型进行比较。 你可以使用带有可变对象的锁,对吗? 它与并行应用程序中与不可变类型一起使用的其他技术相比如何? 你至少不使用具有不可变类型的锁,对吧?

可变结构与类?

我不确定是使用可变结构还是可变类。 我的程序存储了一个包含大量对象的数组。 我注意到使用类会使所需的内存量翻倍。 但是,我希望对象是可变的,并且我被告知使用可变结构是邪恶的。 这就是我的类型: struct /* or class */ Block { public byte ID; public bool HasMetaData; // not sure whether HasMetaData == false or // MetaData == null is faster, might remove this public BlockMetaData MetaData; // BlockMetaData is always a class reference } 像这样分配大量的对象(注意下面的两个代码都运行了81次): // struct Block[,,] blocks = new Block[16, 256, […]

在C#中,闭包不是不可变的有什么好的理由吗?

我一直在脑子里反复思考,而且我似乎无法想出为什么C#闭包是可变的。 如果您不知道究竟发生了什么,这似乎是一种获得意想不到的后果的好方法。 也许知识渊博的人可以阐明为什么C#的设计者会允许状态在闭包中改变? 例: var foo = “hello”; Action bar = () => Console.WriteLine(foo); bar(); foo = “goodbye”; bar(); 这将为第一个呼叫打印“hello”,但外部状态在第二个呼叫时改变,打印“再见”。 更新了闭包的状态以反映局部变量的更改。