2009-05-13 4 views

ответ

6

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

struct MyStruct 
{ 
    public List<string> MyList; 
    public int MyInt; 

    public MyStruct(int myInt) 
    { 
     MyInt = myInt; 
     MyList = new List<string>(); 
    } 
} 
+1

Также обратите внимание, что вы не можете иметь конструктор без параметров. –

+0

Я не уверен, что это значит – Crash893

+0

Точка ... структура не должна ссылаться на изменяемые типы (или коллекции изменяемых объектов) – boctulus

1

структуры может иметь конструктор, и вы можете создать экземпляр списка в конструкторе.

1

Я не эксперт в C#, но структура - это всего лишь прототип того, как будет выглядеть ваша память. Вам нужно будет объявить структурную переменную, чтобы иметь возможность «new list()» и назначить ее переменной списка.

что-то вроде struct test a; a.y = новый список();

Я никогда не программировал на C#, поэтому, пожалуйста, преобразуйте мой синтаксис C в C#.

0

Вы можете это сделать - объявить конструктор для структуры и создать экземпляр списка в конструкторе struct. Вы не можете использовать инициализатор, как было предложено в фрагменте кода.

+0

приватный список y = новый список (); " дает мне "ошибку CS0573:' test.y ': у структур не могут быть инициализаторы полей экземпляра "Конечно, это можно сделать с помощью класса ... –

+0

Yeap, я тестировал его в одно и то же время и обновлял ответ. – sharptooth

Смежные вопросы