无参数构造函数

Jas*_*son 12 c# constructor class

在C#中,有没有办法强制一个类必须有一个无参数构造函数?

SLa*_*aks 16

如果你在谈论通用约束,是的:

class SomeContainer<T> where T : new() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果你在谈论继承.不可能要求实现接口或继承基类的每个类都具有无参数构造函数.

您可以做的最好的事情是在基础构造函数中使用反射来抛出异常(在运行时),如下所示:

abstract class MyBase {
    protected MyBase() {
        if (GetType().GetConstructor(Type.EmptyTypes) == null)
            throw new InvalidProgramException();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你在谈论一个班级,是的; 刚放入一个.