这样写的构造函数我不怎么看得懂,大家能帮忙解释一下吗?
   public class WebSpider
   {
      private        Uri             m_startUri;
      private        Uri          m_baseUri;
      private        int             m_uriProcessedCountMax;
      private        int       m_uriProcessedCount;
      private        bool              m_keepWebContent;      private        Queue           m_webPagesPending;
      private        Hashtable       m_webPages;
      private        IWebPageProcessor m_webPageProcessor;      public WebSpider( string startUri ) : 
         this ( startUri, -1 ) { }      public WebSpider( string startUri, int uriProcessedCountMax ) : 
         this ( startUri, "", uriProcessedCountMax, false, new WebPageProcessor( ) ) { }      public WebSpider( string startUri, string baseUri, int uriProcessedCountMax ) : 
         this ( startUri, baseUri, uriProcessedCountMax, false, new WebPageProcessor( ) ) { }      public WebSpider( string startUri, string baseUri, int uriProcessedCountMax, bool keepWebContent, IWebPageProcessor webPageProcessor )
      {
         StartUri                 = new Uri( startUri );
         
         // In future this could be null and will process cross-site, but for now must exist
         BaseUri                  = new Uri( Is.EmptyString( baseUri ) ? m_startUri.GetLeftPart( UriPartial.Authority ) : baseUri );         UriProcessedCountMax       = uriProcessedCountMax;
         KeepWebContent             = keepWebContent;         m_webPagesPending          = new Queue( );
         m_webPages                 = new Hashtable( );         m_webPageProcessor         = webPageProcessor;         m_webPageProcessor.ContentHandler += new WebPageContentDelegate( this.HandleLinks );
      }
这是这个类的定义以及它的四个构造函数
下面是对构造函数的调用WebSpider spider = new WebSpider( txtUri.Text, txtBaseUri.Text, (int)spnProcessUriMax.Value );我所不解的是这个类的构造函数为什么在 public WebSpider( string startUri )后面加个冒号 再写个this,冒号表示属于当前实例还是什么?this里面的参数又是什么参数?前三个构造函数什么事情都没有做又有什么用?

解决方案 »

  1.   

    我的理解是:冒号表示继承后面的构造方法,this就表示此类,this里面的参数就是相应重载构造方法的参数.
    第二个和第三个构造方法继承第四个,第一个继承第二个,所以实例化时,根据重载,一个,两个,三个,五个的参数都能实例化。
      

  2.   

    这是显示调用基类的构造函数~http://topic.csdn.net/t/20040129/20/2686736.html
      

  3.   

    :表示继承后面的类
    this里是重载时不同的参数,调用时就可以相应的传递参数
    构造函数如果不写,系统就会自动添加一个不带参数的构造函数,那样的话,调用时就不能传递参数。
      

  4.   

    首先要说这是个复杂的构造函数。
    再来解决你的问题
    WebSpider spider = new WebSpider( txtUri.Text, txtBaseUri.Text, (int)spnProcessUriMax.Value );这是一个实例化对象,
    WebSpider( string startUri )后面加个冒号 再写个this,冒号表示属于当前实例还是什么?冒号表示这个构造函数继承public WebSpider( string startUri, int uriProcessedCountMax )这个构造函数。
    this里面的参数又是什么参数?就是您实例化中对象传进去的参数:txtUri.Text
    前三个构造函数什么事情都没有做又有什么用?
    您可以看下,:表示继承。这样理解就好多了