List<T>
を読み取り専用に公開することができますが、私的に設定することはできますか?これは動作しませんリスト<T>プライベートセットで読み取り専用
:
public List<string> myList {readonly get; private set; }
あなたが行う場合でも:
public List<string> myList {get; private set; }
あなたはまだこれを行うことができます。
myList.Add("TEST"); //This should not be allowed
私はあなたが持っている可能性が推測:
public List<string> myList {get{ return otherList;}}
private List<string> otherList {get;set;}
大きなポイントに不要なキャストを防ぎたい場合。多くの人々が参照型の概念を欠いており、参照を読み取り専用に設定しています。 +1 –
IListとしてReadOnlyCollectionを使用する方がよいでしょう。 –
Joe
+1。 System.Collections.ObjectModel.ReadOnlyCollectionをパブリックに戻すことは、パブリックプロパティで「プライベートセット」を使用するよりも優れています。これは、コンパイル時チェックを行うためです。つまり、読み取り専用のコレクションでAdd()またはRemoveAt()を使用するとコンパイルエラーが発生しますが、「プライベートセット」は無効になります。 – MikeTeeVee