Raj*_*jes 5 .net c# constructor
根据MSDN的构造函数设计指南,
"如果没有在类型上显式声明任何构造函数,许多语言(如C#)将自动添加公共默认构造函数.(抽象类获取受保护的构造函数.)将参数化构造函数添加到类中可防止编译器添加默认构造函数.这通常会导致意外的破坏性更改."
为什么不:
"如果你没有在类型上显式声明任何默认构造函数,那么许多语言(例如C#)将自动添加一个公共默认构造函数.(抽象类获得受保护的构造函数.)"
这背后的原因是什么?
ang*_*son 14
因为并非所有类都应构造为无参数.
考虑一个用于实现应用程序与磁盘上文件之间接口的类.必须处理构造对象的情况而不指定要管理的文件将是非常不方便的.
这样,由于创建非静态类的主要一点是,你要创建它的对象,你做足不必添加一个空参数的构造函数,如果这是你想拥有.
一旦你开始添加构造所有,那么AUTOMAGIC被禁用,将不会提供默认的构造函数.
如果我定义一个自定义构造函数,这意味着我的对象需要以特定方式初始化,例如:
class Customer
{
public Customer(string name) { this.Name = name; }
public string Name { get; }
}
Run Code Online (Sandbox Code Playgroud)
如果编译器也添加了,public Customer()那么您可以绕过使用名称初始化客户的要求.
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |