У меня та же проблема, что и IList<int> throws Null Reference Exception when adding values, и решение инициализирует поле списка в конструкторе с помощью «new List();», но в моей программе у меня есть структура, нет класса. Что я могу сделать с C#, если структуры в C# без параметров?Инициализировать поле списка в структуре
public struct ListStruct<T> : IEnumerable<T>, IList<T>
{
private List<T> value;
//public ListStruct()
//{
// this.value = new List<T>();
//}
// ...
public void Add(T item)
{
((IList<T>)value).Add(item); // Execution time: NullReferenceException was unhandled
}
}
Обтекание '' 'внутри' структуры' кажется мне плохой идеей. Зачем ты это делаешь? FYI ссылкой является «Список ' внутри вашей 'struct'. Вы должны инициализировать его 'private List value = new Список ();'. –
juharr
Зачем комментировать конструктор? У вас уже есть код для решения проблемы. (Ну, почти. Вам нужно определить параметры для конструктора. Этот вид восходит к комментарию выше, пытаясь понять, что эта структура на самом деле предназначена для * be *.) – David
Это не дубликат, как указано врачом и Дэвид. Проблема заключается в том, что структура не может иметь конструктор по умолчанию, поэтому нет возможности инициализировать его элемент, хранящийся по ссылке, если вы не предоставите конструктор с параметром (https://msdn.microsoft.com/en-us/library/aa288208 (v = vs.71) .aspx) или отказаться от своей идеи, чтобы она была «struct» – zmechanic