案例一:
我正在尝试这个
MessageBox m = new MessageBox();
出现编译错误
'System.Windows.Forms.MessageBox' has no constructors defined
案例二:
然后,我创建了一个没有构造函数的类
class myClass
{
}
并尝试了 myClass my = new myClass();
这次我没有发现错误。
现在,我的问题:
- 为什么我在第一种情况下出错?
既然都是类,而且每个类都有默认的构造函数,那么
- 第一种情况下的默认构造函数在哪里?
最佳答案
构造函数可以是private
或protected
以禁止直接实例化。请改用静态工厂方法。 MessageBox
类中有一个静态方法Show
。
Archil 也是对的。如果定义了显式构造函数,则不再创建隐式默认构造函数。
关于 x0ns 评论:是的,实例化静态类也是不可能的。不要使用静态类,那是糟糕的设计(也有异常(exception))。
关于c# - 为什么 MessageBox 类在 C# 中没有默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5523908/