ich mit, dass eine Klasse, hat eine Sammlung-Eigenschaft:auf einer Klassensammel Mitglied initialisieren
class MyClass
{
public MyCollection Coll { get; private set; }
public MyClass() { this.Coll = new MyCollection(); }
}
class MyCollection : IList { ... }
Jetzt bin ich zwei verschiedene Instanzen von meiner Klasse zu erstellen:
var o1 = new MyClass() { Coll = {"1", "2"}};
var o2 = new MyClass() { Coll = new MyCollection() {"1", "2"} };
Ich verstehe der Compiler beklagt sich über Letzteres, da der Setter für das Objekt nicht existiert (oder in diesem Fall nicht öffentlich zugänglich ist). Die erste jedoch ist eine Zuordnung - wenn auch eine Sammlung Initialisierer.
Ich nehme an, dass Sammlung-Initializer für Get-Only-Eigenschaften zulässig sind, da sie nur Add
auf IList
aufrufen und den Getter der Eigenschaft nicht tatsächlich aufrufen. Ist das richtig?
Ist 'o1' Lauf, oder sehen Sie einen Laufzeitfehler beim Aufruf von 'Add' auf ein' null' Objekt? – dasblinkenlight
Obwohl als doppelt zu einer [älteren Frage] (http://stackoverflow.com/questions/5646285/c-sharp-object-initialization-of-read-only-collection-properties) zu kennzeichnen, wählen Sie für diese eine viel mehr prägnant. –