Синтаксис С# для инициализации настраиваемого класса/объектов через параметры конструктора в массиве?

У меня есть класс с минимум 4 переменными, и я создал конструктор для класса, чтобы я мог инициализировать его с помощью

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

Работает отлично.

Тогда у меня есть массив из них, что мне нужно разобрать в цикле, поэтому я хотел бы получить некоторые статические данные в этом массиве.

Мой подход:

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

но почему-то это дает мне странную ошибку о том, что я нуждаюсь в дополнительном}???

Я не знаю, если я должен упомянуть об этом, но я использую его для веб-страниц с использованием Razor-engine 2. Но я думаю, что это обычный вопрос С#?

Моим обходным путем в настоящее время является инициализация массива с размером, а затем добавление элементов один за другим через индекс, но я предпочел бы использовать вышеприведенное решение, поскольку мне, возможно, придется перемещать элементы вверх и вниз для тестирования, и у меня много более 3 в реальных данных.

Интересно, чего я не хватает в приведенном выше коде...?

Ответы

Ответ 1

Попробуйте добавить квадратные скобки после нового MyClass и полуколонии в конце

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

Ответ 2

Сокращение на победу:

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

Ответ 3

Вы хотите:

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

Вам не хватало скобки к концу.

Ответ 4

это также будет работать без необходимости создания структуры

new MyClass [] { new MyClass { Field1 = "aa", Field2 = 1 } } 

Ответ 5

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

Ответ 6

MyClass[] testobjlist = new MyClass[noOfObjects];
for(int i = 0; i < testobjlist.Length; i++) { testobjlist[i] = new MyClass(); }

Ответ 7

Вы можете использовать приведенный ниже код для массива:

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