Frage

.net Klasse SynchronizedReadOnlyCollection hat 4 Konstrukteure.

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

Was ist die Verwendung des parameterlosen Konstruktor und den Konstruktor nur mit dem Sperrobjekt? Die Kollektion wird immer leer sein, wenn Sie nicht über die Sammlung füllen, wenn Sie die Sammlung zu erstellen? Habe ich etwas verpasst?

War es hilfreich?

Lösung

An einem gewissen Punkt ist es möglich, dass Sie eine leere Sammlung benötigen, beispielsweise wenn Sie eine Klasse und Daten werden initialisiert ist nicht bekannt, wenn der Konstruktor aufgerufen wird. Wenn Sie nicht eine leere Sammlung zuweisen, könnte ein anderer Code fehlschlagen, wenn es das Feld / Eigenschaft für den Zugriff versucht, und wirft eine Nullreferenceexception. Wenn die Daten zu einem späteren Zeitpunkt geliefert wird, ersetzt dieser Code einfach das Feld mit einer neuen, gefüllt Instanz SynchronizedReaOnlyCollection.

Andere Tipps

public SynchronizedReadOnlyCollection();

Initialisiert eine neue, leere Sammlung, die auf einem internen Feld sperren wird.

public SynchronizedReadOnlyCollection(object syncRoot);

Initialisiert eine neue, leere Sammlung, die auf ein Objekt anvisieren Sie.

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

Initialisiert eine neue Sammlung, die Elemente in der Liste enthalten, die auf ein Objekt anvisieren Sie.

Die Dokumentation eine gute Arbeit leistet dies zu erklären. Es ist lesenswert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top