2013-04-13 80 views
0

以下部分對constructor initializers有什麼含義?這是什麼意思

實例構造函數初始值設定項無法訪問正在創建的實例。因此,在構造函數初始值設定項的參數表達式中引用this是一個編譯時錯誤,因爲它是參數表達式通過簡單名稱引用任何實例成員的編譯時錯誤。

+0

+1導致作者不能被指責爲微軟文檔,我認爲這是許多人都不知道的東西。 –

+0

@alina文檔有什麼問題,爲什麼會受到責備? –

+1

沒有什麼是錯的,只是人們在沒有留下任何評論的情況下投下了這個問題。 –

回答

8

這意味着當構造函數初始化器運行時,實例仍處於創建過程中。因此,初始化不能訪問實例成員,無論是通過this或直接:

class Foo 
{ 
    private int _bar; 

    public Foo(int bar) 
    { 
     _bar = bar; 
    } 

    public Foo() : this(_bar)  // Illegal. 
    { 
    } 

    public Foo() : this(this._bar) // Also illegal. 
    { 
    } 
} 

這個道理也適用於這兩個構造函數初始化(this()base())。