2012-11-28 92 views
0

我發現類似跟隨一個類:只讀字段初始化順序

class Controller 
{ 
    private readonly IDataContext _myContext = new DataContext("connectionstring"); 

    public Controller(IDataContext context){ 
     _myContext = context; 
    } 
} 

鑑於實例被創建爲波紋管:

var controller = new Controller(new DataContext("anotherconnectionstring")); 

我想知道的是,這將是最後的分配給_myContext字段的實例?在聲明中作爲參數或作爲RHS使用的參數?

+4

有你想看看編譯器做什麼? –

+0

試試看看。 –

+0

你是對的丹尼爾,可悲的是我不在Windows中,我也沒有單聲道。我只是在線存儲庫中瀏覽代碼。 – lontivero

回答

2

這是一個類定義明確的初始化所有字段移動到默認的類/類型構造將任何其他明確定義的參數化的構造函數之前被調用。所以最終值將會是你在自定義構造函數中傳遞的值。

MSDN, Fields (C# Programming Guide)

字段是構造函數 對象實例調用之前立即進行初始化。如果構造函數分配一個 字段的值,它將覆蓋字段聲明期間給出的任何值。