Benutzer mit den meisten Antworten
Ungültige Deklaration des Initialisierermembers

Frage
-
Hallo,
ich bekomme die Fehlermeldung bei str[0]
class Class1 { List<Class1> myclass = new List<Class1>(); public string test1 { get; set; } public string test2 { get; set; } public string test3 { get; set; } public String[] str = new String[2]; public void classInsert() { myclass.Add(new Class1() { test1 = "1", test2 = "2", test3 = "3", str[0] = "4", }); } } }
(Ungültige Deklaration des Initialisierermembers), bitte um die Erklärung).
Danke
Antworten
-
Hallo,
du kannst im Eigenschaften-Initialisierungsblock nur Eigenschaften, aber keine einzelnen Elemente eines Arrays initialisieren.Du kannst nur das gesamte Array zuweisen:
str = new string[] { "A", "B" },
Wenn du eine Auflistung statt einem Array verwendest, kannst du auch einen Collection-Initialisierungsblock verwenden:str = { "A", "B" },
Beachte aber bitte, das str bei dir auch keine Eigenschaft, sondern ein Feld ist.private String[] _str = new String[2]; public string[] str { get { return _str; } set { _str = value; } }
Solange das Feld public ist bzw. die Eigenschaft einen Setter hat, spielt das keine Rolle. Trotzdem sollte man nach Konvention nur Eigenschaften und keine Felder public machen.
Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert mmx2010 Mittwoch, 9. Juli 2014 14:48
Alle Antworten
-
Hallo,
du kannst im Eigenschaften-Initialisierungsblock nur Eigenschaften, aber keine einzelnen Elemente eines Arrays initialisieren.Du kannst nur das gesamte Array zuweisen:
str = new string[] { "A", "B" },
Wenn du eine Auflistung statt einem Array verwendest, kannst du auch einen Collection-Initialisierungsblock verwenden:str = { "A", "B" },
Beachte aber bitte, das str bei dir auch keine Eigenschaft, sondern ein Feld ist.private String[] _str = new String[2]; public string[] str { get { return _str; } set { _str = value; } }
Solange das Feld public ist bzw. die Eigenschaft einen Setter hat, spielt das keine Rolle. Trotzdem sollte man nach Konvention nur Eigenschaften und keine Felder public machen.
Tom Lambert - C# MVP
Bitte bewertet- und markiert Beiträge als Antwort. Danke.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert mmx2010 Mittwoch, 9. Juli 2014 14:48