it-swarm.com.de

C # -Syntax zum Initialisieren benutzerdefinierter Klassen/Objekte durch Konstruktorparameter in Array

Ich habe eine Klasse mit mindestens 4 Variablen und habe einen Konstruktor für die Klasse erstellt, damit ich sie mit initialisieren kann 

MyClass testobj = new MyClass(1234,56789,"test text", "something else", "foo");

Funktioniert gut.

Dann habe ich ein Array von diesen, die ich in einer Schleife analysieren muss, also möchte ich statische Daten in dieses Array bekommen.

Mein Ansatz war:

MyClass[] testobjlist = new MyClass 
{
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "Ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
}

aber irgendwie gibt mir das einen seltsamen Fehler, weil ich ein Extra brauche.

Ich weiß nicht, ob ich das erwähnen sollte, aber ich verwende es für Webseiten, die die Razor-Engine 2 verwenden. Aber ich denke, das ist eine gewöhnliche C # -Frage?

Mein Workaround besteht derzeit darin, das Array mit einer Größe zu initialisieren und dann die Elemente nacheinander durch den Index hinzuzufügen. Ich würde jedoch die obige Lösung vorziehen, da ich die Elemente beim Testen nach oben und unten verschieben muss, und ich habe eine Menge mehr als 3 in den realen Daten.

Frage mich, was mir im obigen Code fehlt ...?

16
BerggreenDK

Fügen Sie nach dem neuen MyClass eckige Klammern hinzu und am Ende ein Semikolon

    MyClass[] testobjlist = new MyClass[] 
        {
         new MyClass(1001,1234,"Text 1", "abcdefghijklm", "Ding"),
         new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
         new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
        };
20
Eric Beaulieu

Abkürzung für den Sieg:

var myClassList = new[]
{
    new MyClass(1001,1234,"Text 1", "abcdefghijklm", "Ding"),
    new MyClass(1002,2345,"Text xx", "bla bla", "dong")
};
2
Ben Sewards

Sie wollen:

MyClass[] testobjlist = new MyClass[] { ... }

Sie haben die Klammern am Ende vermisst.

2
Kirk Woll

dies funktioniert auch, ohne dass eine Konstruktion erstellt werden muss 

new MyClass [] { new MyClass { Field1 = "aa", Field2 = 1 } } 
1
ahaliav fox
MyClass[] testobjlist = new MyClass[noOfObjects];
for(int i = 0; i < testobjlist.Length; i++) { testobjlist[i] = new MyClass(); }
0
MyClass[] testobjlist = 
    {
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "Ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
    };
0
Nitin Rajurkar

Sie können den folgenden Code für das Array verwenden:

additionalusers[] __adiitonaluser =
{
    new additionalusers()
};
__adiitonaluser[0].Email = Userpersonal.Email;
0
Hari Lakkakula