2

.net クラス SynchronizedReadOnlyCollection には 4 つのコンストラクターがあります。

    public SynchronizedReadOnlyCollection();
    public SynchronizedReadOnlyCollection(object syncRoot);
    public SynchronizedReadOnlyCollection(object syncRoot, IEnumerable<T> list);
    public SynchronizedReadOnlyCollection(object syncRoot, params T[] list);

パラメーターなしのコンストラクターとロック オブジェクトのみのコンストラクターの使用法は何ですか? コレクションを作成するときにコレクションを埋めないと、コレクションは常に空になりますか? 私は何かが恋しいですか?

4

2 に答える 2

4

ある時点で、空のコレクションが必要になる可能性があります。たとえば、クラスを初期化していて、コンストラクターが呼び出されたときにデータが不明な場合です。空のコレクションを割り当てないと、そのフィールド/プロパティにアクセスしようとして他のコードが失敗し、NullReferenceException がスローされる可能性があります。後の段階でデータが提供される場合、そのコードは単純にフィールドを の新しい塗りつぶされたインスタンスに置き換えますSynchronizedReaOnlyCollection

于 2010-08-28T18:02:45.193 に答える
1
public SynchronizedReadOnlyCollection();

内部フィールドをロックする新しい空のコレクションを初期化します。

public SynchronizedReadOnlyCollection(object syncRoot);

指定したオブジェクトをロックする新しい空のコレクションを初期化します。

public SynchronizedReadOnlyCollection(object syncRoot, IEnumerable<T> list);

指定したオブジェクトをロックするリスト内の要素を含む新しいコレクションを初期化します。

ドキュメントはこれをうまく説明しています。読む価値があります。

于 2010-08-28T18:00:12.640 に答える