答えて
:もちろん
class School
{
private readonly List<Student> _students = new List<Student>();
public ReadOnlyCollection<Student> Students
{
get { return _students.AsReadOnly(); }
}
}
をこれを行うには、まだStudent
オブジェクトには影響しませんので、完全に不変であることを、Student
オブジェクトはに不変であることが必要です。
良い点。深い不変性は深いコピーに似た問題に直面する –
@BradThomasどのようにC#でディープコピーを実装するのですか? C#にはコピーコンストラクタはありません。 – user1899020
階層全体を通してコピーをシリアル化または適用することができます。これは、タイプによっては比較的シンプルで複雑なものになります。 http://stackoverflow.com/questions/129389/how-do-you-do-a-deep-copy-an-object-in-net-c-specificallyを参照してください –
単純にバッキングフィールドをプライベートフィールドにして、パブリックプロパティのゲッターにリストの読み取り専用バージョンを返すようにします。
class School
{
private List<Student> students;
public ReadOnlyCollection<Student> Students
{
get
{
return this.students.AsReadOnly()
}
private set;
}
}
私は個人的に@ポークの答えを優先したいと思いますプロパティは、コレクションの読み取り専用性を明確に反映しています。 –
@ C.Evenhuis良い点。コードスニペットが更新されました – James
- 1. AutoMapperで匿名オブジェクトをクラスにマップする方法は?</p> <pre><code>public class Tag { public int Id { get; set; } public string Word { get; set; } // other properties... // and a collection of blogposts: public ICollection<Post> Posts { get; set; } } </code></pre> <p>とモデル:
- 2. 私はクラスからのリストオブジェクトを作成し、今この</p> <pre><code>public class SummaryA { public string name { get; set; } public string surename { get: set; } public int age { get; set;} } </code></pre> <p>のようにC#でコードを作成する可能性について必要がある#
- 3. 私はクライアント例えば</p> <pre><code>public class Client { public string ClientID { get; set; } // Client public decimal Amount { get; set; } // Sales $ } </code></pre> <p>のリストを持っているグループ化された結果
- 4. Automapper:</p> <pre><code>public class PriceDto { public string Ticker {get; set;} public double Open {get; set;} public double Close {get; set;} } </code></pre> <p>ソースオブジェクト::私はDTOオブジェクトには、次のしているだけで
- 5. リスト<Class>をC#のDictionary <string、List <String>>に変換する方法はありますか?
- 6. "span3"を "span"を変更せずに "col3"に置き換える方法はありますか?</p> <pre><code><span class="col3"></span><span class="col4"></span> <span class="col5"></span><span class="col6"></span> </code></pre> <p>から
- 7. 私は、たとえば、これを行うだろうTTYPE =パラメータ、</p> <pre><code>public class Parameter { public string VendorId { get; set; } public string RunMonth { get; set; } public string CoverageMonth1 { get; set; } } </code></pre> <p>リストをソートしたい場合は、リスト<TTYPE>
- 8. テーブル「セル」(td)でラベルを右揃えにするにはどうすればよいですか?このCSSで...</p> <pre><code><td> <label class="whitefont righthoralign">Search</label> </td> </code></pre> <p>:
- 9. linqクエリで階層データの深さを取得する方法は?</p> <pre><code>var list = new List<Data>(){some data...} class Data { public int number; public List<Data> info; } </code></pre> <p>注:
- 10. LINQ ToListがここで使用されないのはなぜですか? <code>source</code>が<code>IEnumerable<T></code>ある</p> <pre><code>using(var iterator = source.GetEnumerator()) {...} </code></pre> <p>:
- 11. 私は<code>School</code>クラスに<code>mTeacher</code>変数インスタンスを持つ
- 12. List <IEnumerable <ProductViewModel >>を<IEnumerable <ProductViewModel >>に変換する方法は?
- 13. 私は次のようにコンストラクタでintilizeしようとしていながら、私はこの</p> <pre><code>public class Menu { public int MenuID { get; set; } public string MenuName { get; set; } public string LinkAddress { get; set; } public Menu[] menu; } </code></pre> <p>のようなクラスを持つC#のコンストラクタ
- 14. JPA:マップ<Entity1、Set <Entity2>>が可能ですか?
- 15. プロパティはどのようにカプセル化を提供しますか? 、代わりにフィールド_specialStringを使用しての、ここで</p> <pre><code>class SitePage { private string _specialString; public string SpecialString { get { return _specialString; } set { _specialString = value; } }} </code></pre> <p>:
- 16. は、私は2つのリスト</p> <pre><code>List<Product> Products; List<Showcase> Showcases; </code></pre> <p>Productクラスは、ショーケースクラス</p> <p>やショーケースのようなクラスのID値であるShowcaseIDが含まれているを持っているのLINQ
- 17. Swiftの親/スーパークラスへの参照を取得するには? <code>A</code>からこの例では<code>B</code>継承を</p> <pre><code>class A { } class B:A { } </code></pre> <p>:
- 18. このテストは同音異義語ですか?</p> <pre><code>if((x>0 || (x<=0))) </code></pre> <p>と<code>if(true)</code>の違いは何であるいくつかの</p> <pre><code>double x; </code></pre> <p>考える
- 19. 型不一致:Map <Object、Map <Object、List <ActorContents >>>からMap <Actor、Map <String、List <ActorContents >>>に変換できません。
- 20. は、私はRDDが</p> <pre><code>JavaPairRDD<String, List<String>> existingRDD; </code></pre> <p>と呼ばれてい
- 21. のArrayListのカスタムは、私は、これらのオブジェクトのいくつかのオブジェクト</p> <pre><code>class A { private Long id; private String name; public boolean equals(Long v) { return this.id.equals(v); } } </code></pre> <p>とのArrayListを持っている方法
- 22. C#ラムダ?</p> <p><code>public int ID;</code></p> <p><code>public MovingObject character;</code></p> <p>私は多分、行う必要があります。クラスのリストでプロパティ(文字)が1
- 23. PyQtは - 私はクリックすることができます</p> <pre><code>class Main(QtGui.QMainWindow): </code></pre> <p>を持って
- 24. {*; * {の追加を何この文では</p> <pre><code>-keep public class * extends android.support.design.widget.CoordinatorLayout$Behavior { *; } </code></pre> <p>;:} ProGuardの
- 25. <p>は、私が聞いてもどこで、どのように</p> <pre><code>http://domain.com, http://www, https://domain.com </code></pre> <p></p> <pre><code>https://www </code></pre> <p>にリダイレクトするために?</p>あなたのnginxの設定ファイルで
- 26. 私は<code>DataObject</code>呼ば<code>Applicant</code>とそれ<code>$has_one</code><code>Member</code>(これはSilverStripe <code>Member</code>クラスである)を持つSilverStripe
- 27. ダイナミックオブジェクトは、これは、この中</strong></p> <pre><code>IResultSEt rs = db.SELECT.COLUMNS(db.GetTable(data.ToString()).ColumnNames).FROM(data.ToString()).Execute(); </code></pre> <p>、動作しない作品</p> <p><strong>
- 28. マスターから別のブランチにgit変更を適用するにはどうすればよいですか? <li>test1の</li> <li>test2は</li> </ul> <p></li>は今、私はマスターにいくつかの変更を加えなかった</p> <ul> <li>マスター:
- 29. は、私は、これはTであっても</p> <pre><code>f(List(1,2,3), "this is a string") </code></pre> <p>ため、エラーなしで動作し、次の関数に</p> <pre><code>def f[T](l:List[T], v:T) </code></pre> <p>を持って、正確にT
- 30. Collections.sort()の宣言:</p> <pre><code>public static <T extends Comparable<? super T>> void sort(List<T> list) </code></pre> <p>及びません:<? super T>ではなく<T>
代わりに、[不変リスト](https://msdn.microsoft.com/en-us/library/e78dcd75.aspx)を公開することができます。 – poke
何を制限しますか?コレクションに追加されたコレクションまたはアイテムの初期化? – vendettamit
あなたが不変であることを正確に左右します。各学生にカプセル化されたデータが変更されないようにしますか? –