如何将列表定义为结构字段?

像这样的东西:

public struct MyStruct
{
    public decimal SomeDecimalValue;
    public int SomeIntValue;
    public List<string> SomeStringList = new List<string> // <<I Mean this one?
}


然后像这样使用该字符串:

Private void UseMyStruct()
{
     MyStruct S= new MyStruct();
     s.Add("first string");
     s.Add("second string");
}


我已经尝试了一些方法,但是它们都返回错误并且不起作用。

最佳答案

您不能在结构中具有字段初始化程序。

原因是字段初始值设定项实际上已编译为无参数构造函数,但是您不能在结构中包含无参数构造函数。

您不能使用无参数构造函数的原因是,结构的默认构造是使用零字节擦除其内存。

但是,您可以执行以下操作:

public struct MyStruct
{
    private List<string> someStringList;

    public List<string> SomeStringList
    {
         get
         {
             if (this.someStringList == null)
             {
                 this.someStringList = new List<string>();
             }

             return this.someStringList;
         }
    }
}


注意:这不是线程安全的,但是可以根据需要进行修改。

08-18 17:44