除了类 object 的实例构造函数以外,所有其他的实例构造函数都隐式地包含一个对另一个实例构造函数的调用,该调用紧靠在构造函数体的前面。要隐式调用的构造函数是由构造函数初始值设定项确定的: base(参数列表可选)形式的实例构造函数初始值设定项导致调用直接基类中的实例构造函数。该构造函数是根据参数列表和第 7.4.2 节的重载决策规则选择的。候选实例构造函数集由直接基类中包含的所有可访问实例构造函数组成(包括所有默认构造函数,详见第 10.10.4 节中的定义)。如果此集合为空,或者无法标识单个最佳实例构造函数,就会发生编译时错误。 
this(参数列表可选)形式的实例构造函数初始值设定项导致调用该类本身所声明的实例构造函数。构造函数是根据参数列表和第 7.4.2 节的重载决策规则选择的。候选实例构造函数集包括在该类中声明的所有可访问的实例构造函数。如果此集合为空,或者无法标识单个最佳实例构造函数,就会发生编译时错误。如果实例构造函数声明中包含调用构造函数本身的构造函数初始值设定项,则发生编译时错误。 
如果一个实例构造函数声明中没有构造函数初始值设定项,将会隐式地添加一个 base() 形式的构造函数初始值设定项。因此,下列形式的实例构造函数声明C(...) {...}
完全等效于C(...): base() {...}
实例构造函数声明中的形参表所给出的参数范围包含该声明的实例构造函数初始值设定项。因此,构造函数初始值设定项可以访问该构造函数的参数。例如:class A
{
   public A(int x, int y) {}
}
class B: A
{
   public B(int x, int y): base(x + y, x - y) {}
}
实例构造函数初始值设定项不能访问正在创建的实例。因此在构造函数初始值设定项的参数表达式中引用 this 属于编译时错误,就像参数表达式通过简单名称引用任何实例成员属于编译时错误一样。

解决方案 »

  1.   

    public TextPrintDocument(string filename):this()  //这个this()是什么作用???
    ---------
    如果你在其它类中调用带string 参数的构造函数,它会首先调用TextPrintDocument类的默认构造函数.
    public TextPrintDocument()
    {
    }
      

  2.   

    一、在派生类的构造函数中构造基类的对象。:base()
    二、调用本类的其他构造函数:this()嘿嘿
    盗用
      

  3.   

    this()指构造函数TextPrintDocument(),在这里用这个就是说在TextPrintDocument(string filename)构造函数的开始调用TextPrintDocument()构造函数
      

  4.   

    public TextPrintDocument(string filename):this() 中TextPrintDocument(string filename)是構造函數,而TextPrintDocument 是個繼承基類PrintDocument的繼承類,繼承類实例构造函数時候都會調用基類的構造函數,this() 中的this 表示是基類,可以用base代替,也可以用基類的構造函數名稱,這種方式是顯式調用基類構造函數,當然你也可以直接用public TextPrintDocument(string filename) ,而去掉":this() " ,但是如果去掉之後,您的基類構造函數一定要有一個不帶參數的構造函數,否則會出錯。如果基類有兩個以上的構造函數,在繼承類中您想調用有參數的構造函數,則一定要用public TextPrintDocument(string filename):this(參數列表),這樣的方式顯式調用基類構造函數。