Синтаксис С# для инициализации настраиваемого класса/объектов через параметры конструктора в массиве?
У меня есть класс с минимум 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;