我们正在创建一个简单的结构,其中构造函数接受一个参数.
public struct test
{
public int val;
public test (int a)
{
val = a;
}
}
Run Code Online (Sandbox Code Playgroud)
但我注意到可以使用默认构造函数初始化结构.这可以预防吗?
test t1 = new test(); //why does this work?
Run Code Online (Sandbox Code Playgroud)
您无法阻止在C#中使用默认构造函数来获取值类型.C#规范需要默认构造函数,它由编译器自动添加(实际上您无法明确定义它).运行时提供了可以创建任何值类型而无需将构造函数调用到"全零"实例.我猜C#语言设计者决定通过要求结构的默认无参数构造函数来使CLR的这个特性更加明确.