web-dev-qa-db-fra.com

La syntaxe C # pour initialiser les classes/objets personnalisés via les paramètres constructeur dans array?

J'ai une classe avec au moins 4 variables et j'ai fait un constructeur pour la classe afin de pouvoir l'initialiser avec 

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

Fonctionne bien.

Ensuite, j'ai un tableau de ceux-ci, que je dois analyser dans une boucle, donc j'aimerais obtenir des données statiques dans ce tableau.

Mon approche était:

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!")
}

mais de toute façon cela me donne une erreur étrange de me demander un supplément} ???

Je ne sais pas si je devrais mentionner cela, mais je l'utilise pour les pages Web utilisant Razor-engine 2. Mais je pense que c'est une question ordinaire en C #?

Ma solution consiste actuellement à initialiser le tableau avec une taille, puis à ajouter les éléments un à un au travers de l'index, mais je préférerais utiliser la solution ci-dessus, car je pourrais devoir déplacer les éléments de haut en bas dans l'ordre lors des tests et j'ai beaucoup plus de 3 dans les données réelles.

Vous vous demandez ce qui me manque dans le code ci-dessus ...?

16
BerggreenDK

Essayez d’ajouter des crochets après la nouvelle MyClass et un point-virgule à la fin.

    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

Sténographie pour la victoire:

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

Tu veux:

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

Vous manquiez les crochets vers la fin.

2
Kirk Woll

cela fonctionnera aussi sans qu'il soit nécessaire de créer une construction 

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