目次:
定義-不変型とはどういう意味ですか?
C#のコンテキストでの不変型は、作成後にデータを変更できないオブジェクトの型です。 不変型は、初期化中に割り当てられた後は変更できないため、オブジェクトのプロパティまたは状態を読み取り専用に設定します。
不変の型は、効率的なメモリ管理と高速化のために設計されており、同期要件を持つオブジェクトに適しています。 不変性は、プログラム状態の可視性を変更し、状態を変更する操作をそうでない操作から分離することにより、コードの可読性を向上させます。 不変型は、可変型よりも高いセキュリティを提供します。
不変タイプは、データが一度割り当てられた後も永続するが、将来データを変更する必要がない場合に使用されます。 不変オブジェクトは状態を変更しないため、マルチスレッドおよびマルチプロセスのシナリオでは、複数のスレッドがオブジェクトの読み取りまたは書き込みを行い、競合状態や同期の問題を引き起こす可能性があるため、より便利です。
Techopediaは不変型を説明します
不変タイプのオブジェクトは、キーワード「const」および「readonly」を使用して作成できます。 読み取り専用ではコンストラクタ内のフィールドの変更が許可されますが、constでは許可されません。 数値、文字列、およびnullはconstフィールドとしてのみ使用できますが、これらは本当に不変です。 Readonlyは1回しか書き込みできないため、真に不変ではありません。 したがって、constフィールドのようなコンパイル時定数ではありません。 真に不変なオブジェクトは、内部状態をまったく変更しないため、本質的にスレッドセーフです。
System.Stringクラスは、.NETフレームワーククラスライブラリで提供される不変の参照型です。 このクラスは、文字列操作アクションのために新しい文字列オブジェクトを内部的に作成します。 このタイプのオブジェクトのコンテンツは変更されませんが、構文によりコンテンツを変更できるように見えます。 さらに、文字列はハッシュ値の計算のためのハッシュテーブルキーとして使用され、ハッシュデータ構造が破損するリスクを回避します。
不変型の主な欠点は、他のオブジェクト型よりも多くのリソースを必要とすることです。
