解决方案 »

  1.   

    实际上就是函数的重载,这跟普通函数的重载没有多大区别
    区别仅仅是构造函数是在new的时候执行的
    那么不带参数的构造函数,是在你执行Component1 c=new Component1()的时候执行
    而带参数的构造函数,是在你执行Component1 c=new Component1(container)的时候执行这样写可以让你new的时候省下许多事
    比如你需要给类传递一个参数
    如果构造函数不带参数,你就必须这样传递
    Component1 c=new Component1()
    c.container=container;
      

  2.   

    你这个例子举的没有什么实际意义,所以看不出来这两种写法到底有什么不同
    而如果是个sqlhelper类,我需要在new这个类的时候就要建立一个数据库连接
    那么如果仅仅使用不带参数的构造函数public class sqlhelper
    {
    public string connetionStr;
    public sqlhelper()
    {
    }
    public connect()
    {
    //连接数据库
    }
    }你就必须这样用:
    sqlhelper s=new sqlhelper();
    s.connetionStr=str;
    s.connect();
    而如果用带参数的构造函数,就可以这样public class sqlhelper
    {
    public sqlhelper()
    {
    }
    public sqlhelper(connetionStr)
    {
    //建立连接
    }
    }sqlhelper s=new sqlhelper(str);
      

  3.   

    不带参数的构造函数不利于给类传递参数
    因为一new它就自己执行完了,等你传递完参数,想让它继续往下执行,就要手动执行一些函数
    而带参数的构造函数,你可以在new的同时传递进去,然后在构造函数里执行你要真正执行的逻辑(函数)
    这样你调用的时候只需要传入一个参数,而不必每次都去手动调用里面的函数
      

  4.   

     winfrom中  IContainer container  这个对象是干嘛用的???  我是重载的控件....   
      

  5.   

    IContainer就是谁在引用这个控件啊,这样做就可以通过
    xxx.Parent之类的代码来找到它的上一层控件
      

  6.   

    哦  那是不是意思是 最好还是使用这个构造函数  .这样方面使用容器的概念和 XXX.Parent的方法...
      

  7.   

    使用这个构造函数,你在new这个类的时候直接传入this,那么控件就知道是谁在引用它了
    否则你还需要public一个变量,并public一个方法,等new完之后,外部给变量赋值,再手动调用方法,才能把this添加进container里去