当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在不使用构造函数的情况下初始化结构的成员?

如何解决《有没有办法在不使用构造函数的情况下初始化结构的成员?》经验,为你挑选了3个好方法。

我有一个struct包含两个列表:

struct MonthData
{
   public List Frontline;
   public List Leadership;
}

但是,我想在创建结构时初始化它们.如果我尝试:

struct MonthData
{
   public List Frontline = new List();
   public List Leadership = new List();
}

然后我得到:

Error   23  'MonthData.Frontline': cannot have instance field initializers in structs
...

由于结构不能有无参数构造函数,我不能只在构造函数中设置它.到目前为止,我只能看到以下选项:

    在创建MonthData实例时初始化这两个属性

    使用类而不是结构

    使用参数创建构造函数并使用它

    为懒惰初始化它们的属性创建getter和setter.

推荐的方法是什么?现在,我在想这个课程是最好的主意.



1> Daniel Mann..:

你应该使用一个班级.来自MSDN:

通常,类用于建模更复杂的行为,或者在创建类对象后要修改的数据.结构最适合于主要包含在创建结构后不打算修改的数据的小型数据结构.



2> Charles Bret..:

如果您只是询问语法...尝试构建和使用静态工厂...通常,结构应该用于不可变的东西,而工厂(调用私有构造函数)是一种更好的方法对于不可变类型而不是使用公共构造函数.

  struct MonthData 
  {    
      public List Frontline;
      public List Leadership; 
      private MonthData(List frontLine = null, 
                        List leadership = null)
      { 
         Frontline = frontLine?? new List();
         Leadership = leadership?? new List();  
      }
      public static MonthData Factory(
          List frontLine= null, 
          List leadership= null)
      { return new MonthData(frontLine, leadership); }
  } 



3> Dennis Traub..:

List无论如何都在结构中使用引用类型(),因此使用结构作为值类型对我没有任何意义.我只是去上课.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有