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