没有构造函数的struct

时间:2016-02-09 18:45:47

标签: c# struct constructor

我正在尝试使用存在以下结构的dll:

 public struct MyStruct
 {
     public int Day;
     public int Hour;
     public int Month;
     public int MonthVal;
 }

在我的代码中,我试图为这些变量赋值:

MyStruct MS; OR MyStruct MS = new MyStruct(); and then do
MS.Day = 1;
MS.Hour = 12;
MS.Month = 2;
MS.MonthVal = 22;
问题是,MS无法赋值,并且因为struct没有构造函数,我无法做到

 MyStruct ms = new MyStruct(1, 12, 2, 22);

那么,我如何在结构中获取值?

1 个答案:

答案 0 :(得分:5)

  

在我的代码中,我试图为这些变量赋值

sendmail

这种方法完美无缺(demo)。但是,下面描述的两种方法更好:

如果您不想定义构造函数,此语法将为您节省一些输入,并在单个初始值设定项中将相关项组合在一起:

MyStruct MS = new MyStruct();
MS.Day = 1;
MS.Hour = 12;
MS.Month = 2;
MS.MonthVal = 22;

如果您可以定义构造函数,请改为:

MyStruct MS = new MyStruct {
    Day = 1,
    Hour = 12,
    Month = 2,
    MonthVal = 22
};

这种方法会给你一个不可变的public struct MyStruct { public int Day {get;} public int Hour {get;} public int Month {get;} public int MonthVal {get;} public MyStruct(int d, int h, int m, int mv) { Day = d; Hour = h; Month = m; MonthVal = mv; } } which it should be),以及一个应该像这样调用的构造函数:

struct