我是OOP的新手。
我已经读过“不带参数的构造函数被称为默认构造函数”。
以下构造函数是默认构造函数吗?
Class A
{
int a;
string b;
public A()
{
a=10;
b="Test";
}
}
答案 0 :(得分:3)
是的,因为它没有任何参数/参数。
非默认构造函数的示例是:
public A(int a)
{
this.a = a;
}
答案 1 :(得分:1)
是的,它是默认的构造函数,如果你没有在你的代码中实现它,那么c#编译器会在类中自动注入this
答案 2 :(得分:1)
如果您参考C# 4 specification:
10.11.4默认构造函数 如果类不包含实例构造函数声明,则默认实例构造函数为 自动提供。该默认构造函数只是调用 直接基类的无参数构造函数。
和,对于值类型:
4.1.2默认构造函数所有值类型都隐式声明一个名为默认构造函数的公共无参数实例构造函数。该 默认构造函数返回一个零初始化的实例,称为 值类型
的默认值
答案 3 :(得分:0)
是的,这是C#(和Java)中的公共默认构造函数。如果您没有显式声明一个,编译器将为您创建一个空的默认构造函数。但是,如果使用参数声明构造函数,但不声明默认(无参数)构造函数,则编译器不会自动为您生成默认构造函数。
答案 4 :(得分:-1)
不,这不是默认构造函数。默认构造函数是在创建没有构造函数定义的类的实例时自动调用的构造函数。只要定义了一个零参数的构造函数,就可以使用自定义构造函数覆盖默认构造函数。这就是你在上面做的事情。
要理解这一点,请删除构造函数并将类变量a和b的值分别设置为10和“pankaj”。
然后创建类实例A defaultConst = new A();
并访问a和b的值。