为什么C#的设计者不允许这样的事情?为什么C#中没有声明不变性?
public readonly class ImmutableThing
{
...
}
一个安全的多线程的最重要的方式是使用不可变对象/类的,但没有办法来声明一个类是不可变的。我知道我可以通过适当的实现使其不可变,但通过类声明强制执行它会使它更容易和更安全。充其量,评论一个类是不变的,是一个“门道具”解决方案。
一看类声明,你会立即知道它是不可变的。如果你不得不修改别人的代码,你会知道一个班级不允许通过意图进行修改。我只能在这里看到优势,但我不能相信之前没有人想过这个。那么为什么不支持?
编辑
有人说这是不是很重要的功能,但并没有真正说服我。多核处理器出现了,因为按频率增加的性能碰壁了。超级计算机是大量多处理器机器。并行处理越来越重要,并且是提高性能的主要方式之一。在.NET中对多线程和并行处理的支持非常重要(各种锁类型,线程池,任务,异步调用,并发集合,阻塞集合,并行foreach,PLINQ等),在我看来,一切可以帮助您编写并行代码更容易提供优势。即使这不是微不足道的实施。
因为没有。虽然会很好,但如果他们想要增强语言,似乎会打开窗户。 –
这不就是'struct'吗? (像具有值语义的实体类) – FishBasketGordo
@FishBasketGordo,no。 –