2012-07-21 24 views
1

我有一個類的對象,看起來像這樣內:C#是加入「這個」可選的一類方法

public class SomeObject 
{ 
    int SomeInt { get; set; } 

    public void SomeMethod() 
    { 
     var SomeVar = this.SomeInt; 
     var SomeVar2 = SomeInt; 
    } 
} 

當我指的是一類方法中的類屬性,它使代碼更好/更快/更安全,如果我寫this.SomeInt而不是SomeInt就像我當我分配SomeVar2

感謝您的建議。

+2

編譯後沒有區別。這只是可讀性/編碼實踐的問題。 – 2012-07-21 16:04:01

+0

這是一個很好的做法,因爲您可以消除導致編程錯誤的模糊性。我不知道它是否對速度有影響,但如果它確實如此,那麼 – 2012-07-21 16:06:19

回答

3

它不影響輸出,因爲MSIL是相同的。

如果您沒有任何變量命名約定使得類變量與局部變量不同,那麼我「可能」會更安全。

+0

沒問題,謝謝你的回答。 – frenchie 2012-07-21 16:05:00

2

使用「this」。不會改變代碼的生成方式。因此,性能和安全性不受影響。是否包含「這個」。當你不必,是一個風格問題。一些風格指南建議使用「this」。總是在成員身上。

+0

好的,謝謝你的回答。 – frenchie 2012-07-21 16:05:14

2

次一些例子,當你可能需要添加「這」是當你有在同一範圍內的局部範圍的變量(ReSharper的或VS,我忘了,應該通知你的),如:

string name; 
void SetName(string name) 
{ 
    this.name = name; 
} 

或者,如果你從另一個派生一個構造某種原因:

public void Person(string Name, int age) : this(age) 
{ 
} 
public void Person(int age) 
{ 
} 

否則,它是沒有任何效果的編輯,但我還是會偶爾用它來場之間明確區分參數時他們可能會混淆,等等。

+0

好的,謝謝澄清。 – frenchie 2012-07-21 16:24:44

+1

另一些場景:在本地實例上調用一個擴展方法需要'this.TheMethod()',如同ctor-chaining一樣,並且將引用傳遞給該類之外的實例。或者完全替換一個結構體。第一個也許是最有趣的。 – 2012-07-21 16:37:44

0

它在編譯時沒有區別。正如上面提到的那樣,它使你的代碼更具可讀性,但我認爲它只是訪問你的類變量的另一種方式。

相關問題