2013-12-19 39 views
27

我用ReSharper每天,今天我問自己,爲什麼ReSharper的建議「使用對象初始化」當我這樣做:使用對象初始化 - ReSharper的建議

MyClass myClass = new MyClass 
{ 
    MyInt = 0, 
    MyString = string.Empty 
}; 

MyClass myClass = new MyClass(); 
myClass.MyInt = 0; 
myClass.MyString = string.Empty; 

它被替換

這會優化我的代碼的執行嗎,還是僅僅是重新格式化的問題?

就個人而言,我喜歡它。但有時我恨它,因爲這一點:

Resharper

我不能做step-by-step調試:(

回答

20

第二個包含更少的字符,所以是更緊湊讀你不必重複myClass 2次,並且初始化邏輯在一個塊中

它確實是一個語法糖,它不會改變生成的代碼中的東西,如果你不喜歡它,在ReSharper的警告。

在這裏使用對象初始化的優勢較長後:

+0

我可能會對它的可讀性相反的意見,並認爲不必要的句法成分更容易導致混亂難懂的代碼(resharping我們有複雜的初始化鏈的單一PARAM列表一個有趣的趨勢,BLECH之後),但是這是一個很好的答案,進一步閱讀和解決完整的問題,謝謝。 – kcar

5

你可以一步一步的部分調試如果初始化器是函數調用:

MyClass c = new MyClass() 
{ 
    MyInt = 3, 
    MyString = GenerateString(9) 
}; 

在這種情況下,F11將引領您直衝GenerateString方法。

編輯:如果初始化器是簡單值,則步驟一步調試是沒有意義的反正。