如何防止使用默认构造函数?

时间:2014-03-29 18:31:30

标签: c#

我们正在创建一个简单的结构,其中构造函数接受一个参数。

public struct test
{
    public int val;

    public test (int a)
    {
        val = a;
    }
}

然而我注意到可以使用默认构造函数初始化结构。这可以预防吗?

test t1 = new test();   //why does this work?

1 个答案:

答案 0 :(得分:5)

您无法阻止在C#中使用默认构造函数来表示值类型。 C#规范需要默认构造函数,它由编译器自动添加(实际上您无法明确定义它)。运行时提供了可以创建任何值类型而无需将构造函数调用到“全零”实例。我猜C#语言设计者决定通过要求结构的默认无参数构造函数来使CLR的这个特性更加明确。