"如果类没有构造函数,将自动生成一个默认的无参数构造函数" 如果有构造函数(有参或无参),编译器不会再为你生成一个无参的构造函数,所以你在new Class1时,调用了并不存在的无参的默认构造涵数,于是出错了。C#在这一点上,和C++是一样的。snewxf(心疤) 在C#中,非静态成员变量也可以赋初值,并且编译器会把这种赋值语句自动移到每一个构造函数中。如: public class Class1 { private int a = 0; private int b = 9; public Class1(int p, int t) { a = p; b = t; } ... ... 会被自动改为: public class Class1 { private int a; private int b; public Class1(int p, int t) { a = 0; b = 9; a = p; b = t; } ... ...
如果有构造函数(有参或无参),编译器不会再为你生成一个无参的构造函数,所以你在new
Class1时,调用了并不存在的无参的默认构造涵数,于是出错了。C#在这一点上,和C++是一样的。snewxf(心疤)
在C#中,非静态成员变量也可以赋初值,并且编译器会把这种赋值语句自动移到每一个构造函数中。如:
public class Class1 {
private int a = 0;
private int b = 9;
public Class1(int p, int t) {
a = p;
b = t;
}
... ...
会被自动改为:
public class Class1 {
private int a;
private int b;
public Class1(int p, int t) {
a = 0;
b = 9;
a = p;
b = t;
}
... ...
我一直这么理解的。试了以后发现真的错了!