上面的 代码 无错 , 但是 更改 为  Class1 c =new Class1();  时 报错

解决方案 »

  1.   

    "如果类没有构造函数,将自动生成一个默认的无参数构造函数"
    如果有构造函数(有参或无参),编译器不会再为你生成一个无参的构造函数,所以你在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;
    }
    ... ...
      

  2.   

    晕!谢谢justleon(蜗牛)!
    我一直这么理解的。试了以后发现真的错了!
      

  3.   

    c#高级编程2e p105-106页“如果没有显示的提供任何构造函数,编译器会在后台创建一个默认的构造函数。如果提供了带参数的构造函数,编译器就不会自动提供默认的构造函数。”