C#中无参构造函数的使用问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:45:46
C#中我知道每个类里面都有一个默认的无参的构造函数,及时不添加也能new出对象来。那为什么有的时候要手动添加一个无参的构造函数呢?作用是什么?还有就是到底什么时候需要手动添加无参构造函数呢?

原因有二:
第一:
“每个类里面都有一个默认的无参的构造函数”
这个是有条件的:如果你不手动添加有参的构造函数,则编译时会自动添加一个无参构造函数,但是如果你手动添加了一个有参的构造函数,这个“默认的无参构造函数”就不会自动添加,这时候如果你还想调用无参的构造函数,只能手动写一个无参的构造函数,

第二:
默认的无参构造函数里面是空的,什么都不执行,如果你想在无参构造函数中添加一些初始化代码的工作,那就必须手动写这个无参构造函数,

默认如果不提供构造函数的话,系统会自动生成一个默认的构造函数,是一个没有参数的,但是如果提供了构造函数,系统就不会在提供默认的构造函数了。

按照NET标准,总是应该提供一个没有参数的构造函数,除非你有特别的理由不这么做,需要强迫在对象构造时候来初始化你的对象中的某些数据,而被初始化的数据你不希望在对象初始化后被改变。

作用就是做一些初始化准备。有些对象无论你有参数、没参数都需要初始化。比如分配内存(C++里面用的多),给指定变量赋初值等等。

无参数的构造函数,可以使用某些特定的数据进行数据成员初始化,而不是使用系统默认的数据进行初始化.比如使用系统默认的构造函数
public class Account
{
private int _Id;
private string _Name;
// 如果没有这个构造函数,而是用系统默认构造函数,则_Id = 0;_Name = "";
public Account()
{
this._Id = 10;
this._Name = "User1";
}
}

看你新加东西的类型有的有有的就没有