我正在尝试使用存在以下结构的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);
那么,我如何在结构中获取值?
答案 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