2016-11-01 2 views
2

C#の場合:C++のように、リストconst/readonlyの内容を定義する方法はありますか?constコンテンツでC#リストを作成するには?

C++例:

List<const Content> listWithConstContent; 
+9

C#はそのような不変性をサポートしていないようにC#が不変性をサポートしていません。 – SLaks

+1

ImmutableList を持つSystem.Collections.Immutableのプレリリースがあります。私はそれを試していないが、MSはあなたがNugetからそれを得ることができると言います。 –

+0

別の問題:4.4.xで作業しています。 – monotomy

答えて

1

.NET FrameworkのList<T>クラスが変更可能です。 C#またはCLRには、そのC++機能に相当するものはありません。

あなたは不変のリストをしたい場合は、あなたが使用する必要があるなどImmutableList<T>

+0

ImmutableListの内容は不変か、それともリスト自体か? – monotomy

+0

@tommy_tee、リスト自体は不変です。 'T'が可変型である場合、要素の内容は変化する可能性があります。コンテンツを変更することは悪い習慣としてぶつかるが、コンパイラやランタイムによって強制されることはない。 –

+1

悪い習慣は誰が気にしますか? ;-) – monotomy

1

読み取り専用不変は異なる性質です。あなたはどちらを期待していますか?

  • readonlynessが必要な場合は、C#タイプ システムからのサポートはありません。 がこのオブジェクトの状態を変更することを許可しないインターフェイスを介してオブジェクトを公開する必要があります。
  • 不変性が必要な場合は、そのように動作するようにクラスを設計する必要があります。 を魔法のように不変にする方法はありません。
+0

あなたは説明できますか、どういう意味で不変であり、読み込み専用は同じではありませんか? –

+0

現在の時刻は読み取り専用です。変更できません。確認することはできます。 現在の時間は変更不可能ではありません - 毎回変わる量子数 – Karol

+0

これは本当に良い例です。私は不変のものが前に読まれただけの主張と同じではないことを理解しませんでした。私は今行う。ありがとう。 –

関連する問題