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

C#中我知道每个类里面都有一个默认的无参的构造函数,及时不添加也能new出对象来。那为什么有的时候要手动添加一个无参的构造函数呢?作用是什么?还有就是到底什么时候需要手动添加无参构造函数呢?

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

第二:
默认的无参构造函数里面是空的,什么都不执行,如果你想在无参构造函数中添加一些初始化代码的工作,那就必须手动写这个无参构造函数,
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-21
默认如果不提供构造函数的话,系统会自动生成一个默认的构造函数,是一个没有参数的,但是如果提供了构造函数,系统就不会在提供默认的构造函数了。

按照NET标准,总是应该提供一个没有参数的构造函数,除非你有特别的理由不这么做,需要强迫在对象构造时候来初始化你的对象中的某些数据,而被初始化的数据你不希望在对象初始化后被改变。本回答被提问者采纳
第2个回答  2009-05-31
无参数的构造函数,可以使用某些特定的数据进行数据成员初始化,而不是使用系统默认的数据进行初始化.比如使用系统默认的构造函数
public class Account
{
private int _Id;
private string _Name;
// 如果没有这个构造函数,而是用系统默认构造函数,则_Id = 0;_Name = "";
public Account()
{
this._Id = 10;
this._Name = "User1";
}
}
第3个回答  2021-06-29
*构造方法的作用:为属性赋值
*如果没有显示定义构造方法,则会有一个默认的无参的构造方法
*如果显示定义了构造方法,则没有默认构造方法
*只能用new 方法名()的形式调用构造方法
*构造方法通常声明为public
*构造方法没有返回值类型
*构造方法名必须与类名相同
--来源于百度网友
第4个回答  2009-05-31
作用就是做一些初始化准备。有些对象无论你有参数、没参数都需要初始化。比如分配内存(C++里面用的多),给指定变量赋初值等等。

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

c#中无参构造函数可以直接用类中的字段吗
可以的,只要是类中的成员,在构造方法中都可以使用的。1)关于构造方法总结:a、构造方法用来创建对象,并且可以在构造函数中对对象进行初始化,是最先调用的方法。b、构造方法是用来创建对象的特殊方法,方法名和类名一样,没有返回值,也可以省略void不写。c、构造函数可以有参数,new对象的时候传递函...

c#有参构造函数中怎么调用其无参构造函数
{ public A(){ } public A(int A) :this(){ } } 当A a=new A(1);时 会先调用无参数的构造函数。在调用有参数那个 参考资料:p

构造函数的有参和无参的区别,构造函数的参数是派什么用场的?
如果构造方法有参数,在创建对象时传入了参数,那么就会调用此方法,这一点和重载类似。2.没有参数的构造函数就是默认构造函数。有参数的构造函数可用传递的参数给类中的属性赋初始值或执行初始化操作例如订阅事件等。构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始...

C#中构造函数和析构函数的用法(三)
构造函数B(int int)在这里构造函数的执行次序是一定要分析清楚的 另外 如果基类A中没有提供无参构造函数public A( ) { x = ; } 则在派生类的所有构造函数成员初始化表中必须指出基类A的有参构造函数A(i) 如下所示 class A{  private int x; public A( int i ) { x = i; }};class...

c# 问题:不包含采用0个参数的构造函数。。。
public Fruit(String name){ Name = name;} 你写了这个带参数的构造函数,导致默认的不带参数的构造函数public Fruit(){}被覆盖掉了,你只要把它给添加上就可以了

c#错误 1 “Graphics”方法没有采用“0”个参数的重载 ,z这是为什么...
一个类,在你不定义构造函数的情况下,会有默认的无参构造函数。当你定义了有参的构造函数时,默认的无参构造函数不会被系统自动定义。在以上两点的基础上,所以当你定义Triangle(double x, double y, double z)这个构造函数的时候,实际上它相当于 Triangle(double x, double y, double z) : ...

C语言里面构造函数和析构函数的运用办法
如果派生类又有对象成员,则,先执行基类的构造函数,再执行成员对象类的构造函数,最后执行派生类的构造函数。 至于执行基类的什么构造函数,缺省情况下是执行基类的无参构造函数,如果要执行基类的有参构造函数,则必须在派生类构造函数的成员初始化表中指出。如: class A { private int x; public A( ) { x = 0...

c#不包含两个参数的构造函数是什么意思
意思是你用两个参数实例化了一个类,但是这个类并没有2个参数的构造函数;形如:public class TestClass{ \/\/ 只有一个参数的构造函数 public TestClass(string p1) { return p1; }}\/\/ 使用两个参数来实例化类时就会抛出“不包含两个参数的构造函数”的异常TestClass t =new Test...

c#的结构中到底有没有默认的无参构造函数?
结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。实际上,编译器通过为所有字段赋予默认值(参见默认值表)来实现默认构造函数 参考资料:http:\/\/msdn.microsoft.com\/zh-cn\/library\/saxz13w4(VS.80).aspx

相似回答