如果在结构的构造函数中
internal struct BimonthlyPair
{
internal int year;
internal int month;
internal int count;
internal BimonthlyPair(int year, int month)
{
this.year = year;
this.month = month;
}
}
Run Code Online (Sandbox Code Playgroud)
我没有初始化字段(在这种情况下计数)我收到一个错误:
在将控制权返回给调用者之前,必须完全分配字段'count'
但是,如果我在这种情况下分配所有字段,包括计数
this.year = year;
this.month = month;
this.count = 0;
Run Code Online (Sandbox Code Playgroud)
错误消失了.
我认为这是因为当有人创建一个新的struct对象时,C#不会初始化struct字段.但为什么?据我所知,它在其他一些情境中初始化变量,那么为什么一个结构是一个不同的风景呢?
我不能回答为什么.但你可以通过使用:this()来修复它.
internal struct BimonthlyPair
{
internal int year;
internal int month;
internal int count;
internal BimonthlyPair(int year, int month)
: this() // Add this()
{
this.year = year;
this.month = month;
}
}
Run Code Online (Sandbox Code Playgroud)