none
Ungültige Deklaration des Initialisierermembers RRS feed

  • 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

    Mittwoch, 9. Juli 2014 14:34

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
    Mittwoch, 9. Juli 2014 14:43
    Moderator

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
    Mittwoch, 9. Juli 2014 14:43
    Moderator
  • Hallo,

    vielen Dank für Deine schnelle Antwort.

    Gruß

    mmx2010

    Mittwoch, 9. Juli 2014 14:48