在struct中初始化List字段

时间:2016-05-04 14:33:41

标签: c#

我有同样的问题IList<int> throws Null Reference Exception when adding values,解决方案是用“new List();”初始化构造函数中的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
    }
}

1 个答案:

答案 0 :(得分:0)

如果您真的需要这个,可以对{0}进行Add()方法测试,并在必要时指定一个新列表。

很难理解为什么你会需要这个。它在语义上不是一种价值类型,因此它通常不应该是struct,并且出于性能原因滥用它并因此没有多大意义。比你原本更复杂的道路。