Bet*_*moo 0 c# constructor struct initialization class
我有一个自定义结构:
struct A
{
public int y;
}
Run Code Online (Sandbox Code Playgroud)
一个带有空构造函数的自定义类:
class B
{
public A a;
public B()
{
}
}
Run Code Online (Sandbox Code Playgroud)
这是主要的:
static void Main(string[] args)
{
B b = new B();
b.a.y = 5;//No runtime errors!
Console.WriteLine(b.a.y);
}
Run Code Online (Sandbox Code Playgroud)
当我运行上面的程序时,虽然我没有在B类构造函数中初始化struct A,但它并没有给我任何错误.'a = new A();'
我没有在B类构造函数中初始化struct A.
C#为你做这件事.除非在声明或构造函数中为其指定其他值,否则所有类的成员都将初始化为其默认值.
对于class
实例,默认值是null
与使用该实例时,你会得到一个错误.然而,对于struct
情况(这是不是不像类实例的引用),不存在一个null
值.a的默认值struct
是其所有字段都已默认初始化的实例.
这就是你的代码有效的原因.