我有一个关于编码练习的问题。我想创建一个无法初始化的类。我相信我有 3 个选择:
- 抽象修饰符
- 静态修饰符
- 私有(private)构造函数
我不想仅仅因为必须将我所有的属性和方法命名为“static”而创建一个静态类——它看起来很乱(而且我不能使用“this”关键字)。
根据 MSDN:
Use the abstract modifier in a class declaration to indicate that a class is intended only to be a base class of other classes.
编辑 不会从此类继承任何内容。
然而,这将是一个解决方案(但在我看来,在这种情况下使用它似乎是错误的)。
或者,我可以创建一个私有(private)构造函数,这样就无法初始化该类。
如果有帮助,原因如下:该类负责启动工作流程。它不需要初始化,因为没有返回任何内容 - 它只需要“启动”。
演示代码
class Program
{
static void Main(string[] args)
{
WorkFlow wf = new WorkFlow(); // this will error which is fine!
ComplexObject co = new ComplexObject();
WorkFlow.Begin(co);
Console.ReadKey();
}
}
public class WorkFlow
{
private WorkFlow()
{
//private to prevent initialization but this feels wrong!
}
public static void Begin(ComplexObject co)
{
//code to begin the workflow
}
}
最佳答案
I want to create a class which can't be initialized.
剩下可能的用法:仅静态或基类。
如果您的类将派生自,请使用abstract
。在这种情况下,私有(private)/ protected 构造函数将是一个 hack。
您的示例代码看起来更像是一个static
类。以单例为替代。
关于c# - 编码实践 - 使用抽象或私有(private)构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458757/