为什么 C# 的设计者不允许这样的事情发生?
public readonly class ImmutableThing
{
...
}
安全多线程的最重要方法之一是使用不可变对象/类,但没有办法将类声明为不可变。我知道我可以通过适当的实现使其不可变,但是通过类声明强制执行它会使其更容易和更安全。将一个类评论为不可变的,充其量只是一个“门道具”解决方案。
一看类声明,您就会立即知道它是不可变的。如果您必须修改其他人的代码,您会知道一个类不允许有意更改。我只能在这里看到优势,但我不敢相信以前没有人考虑过这一点。那为什么不支持呢?
编辑
有人说这不是很重要的功能,但这并不能真正说服我。多核处理器的出现是因为通过频率提高性能遇到了障碍。超级计算机是大量的多处理器机器。并行处理越来越重要,是提高性能的主要途径之一。.NET 中对多线程和并行处理的支持非常重要(各种锁类型、线程池、任务、异步调用、并发集合、阻塞集合、并行 foreach、PLINQ 等),在我看来,一切都可以帮助您编写并行代码更容易提供优势。即使实施起来并不简单。