C# の設計者がこのようなことを許可しなかったのはなぜですか?
public readonly class ImmutableThing
{
...
}
安全なマルチスレッド化の最も重要な方法の 1 つは、不変オブジェクト/クラスを使用することですが、クラスを不変として宣言する方法はありません。適切な実装によって不変にできることはわかっていますが、これをクラス宣言によって強制すると、はるかに簡単かつ安全になります。クラスを不変としてコメントすることは、せいぜい「ドア小道具」ソリューションです。
クラス宣言を一目見ただけで、それが不変であることがすぐにわかります。他の誰かのコードを変更する必要がある場合、クラスが意図的な変更を許可していないことがわかります。ここには利点しかありませんが、これまで誰も考えていなかったとは信じられません。では、なぜサポートされていないのでしょうか。
編集
これはそれほど重要な機能ではないと言う人もいますが、それは私を本当に納得させません. マルチコア プロセッサが登場したのは、周波数によるパフォーマンスの向上が壁にぶつかったためです。スーパーコンピューターは、高度なマルチプロセッサー マシンです。並列処理はますます重要になり、パフォーマンスを改善するための主要な方法の 1 つになっています。.NET でのマルチスレッドと並列処理のサポートは重要です (さまざまなロックの種類、スレッド プール、タスク、非同期呼び出し、同時コレクション、ブロッキング コレクション、並列 foreach、PLINQ など)。コードはより簡単に優位に立つことができます。実装するのは簡単ではありません。