我有一个如下结构。我没什么问题
问题1:
struct MyStruct
{
public MyStruct(int a)
{
this.a = a;
this.b = 10;
}
public int a;
public int b;
}
当我从MyStruct构造器中删除this.b时,它将给我一个错误“必须将字段完全分配,然后控制权才能返回给调用者”。但在上课的情况下不会发生
问题2:
struct MyStruct
{
//public MyStruct(int a)
//{
// this.a = a;
// this.b = 10;
//}
//int asd;
//public int MyProperty { get; set; }
public void getImplemen()
{
Console.WriteLine("azsdfa");
}
public int a;
public int b;
}
static void Main(string[] args)
{
MyStruct myStruct ;
myStruct.a = 15;//when I comment this it will give an error
myStruct.b = 15; //when I comment this it will give an error
myStruct.getImplemen();
}
当我将
MyStruct myStruct
更改为MyStruct myStruct = new MyStruct ();
它工作正常。
为什么这样?
最佳答案
就是这样。
默认构造函数将每个字段初始化为默认值,而带有参数的构造函数将强制您初始化结构中的每个字段。
如果您有一个默认的构造函数和一个带参数的构造函数,您会问?好吧,我不记得了。很容易自己检查。
关于c# - C#中Struct的奇怪行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32390295/