2011-05-04 47 views
7

可能重複:
When do you use the 「this」 keyword?使用或不使用「這個」預選賽中,C#

我剛開始使用ReSharper的分析我的代碼,並有很多事情它建議我這樣做,我對它的輸出感到非常滿意,因爲它也教會了我一些更好的做事方法。

很明顯,它的建議可以忽略,其中一個我只想從社區獲得一些反饋!

我一直傾向於對屬於當前類的屬性(即this.Name)使用'this'限定符。沒有真正的理由 - 我似乎在今天採用了這麼多的衛星。

Resharper認爲這是多餘的,也許我應該刪除它。

您認爲如何?

+1

肯定有一些重複的:http://stackoverflow.com/questions/725770/should-the-java-this-keyword-be-used-when-it-is-optional和http:// stackoverflow .com/questions/3920279/should-i-use-this-keyword-in-oop-programing-where-its-possible-to-skip-it-an – Dyppl 2011-05-04 14:46:53

+2

你知道你在課堂或工作中的夢想你沒有穿任何衣服?這就是成員的財產或方法引用沒有這個'this.'讓我感覺。 – 2011-05-04 14:49:24

+0

考慮類比,在這種情況下穿衣服將是一種不必要的,臨界神經質行爲。 – 2011-05-10 10:15:52

回答

11

要記住的一件重要的事情是編譯器刪除了this,所以它純粹是「你和共享代碼的人看起來不錯」的問題。它會影響性能而不是白色。

+0

謝謝 - 這是我主要關心的問題 - 我的偏好是否優於性能。 – EzaBlade 2011-06-15 11:35:30

2

它在技術上是多餘的,但StyleCop(如果你挑剔並使用全套Microsoft編碼標準)說你應該使用它。

我確實很多人都沒有,所以我想這是根據個人喜好或僱主的編碼標準。

1

在這種情況下,它的首選項 - 所以你更喜歡使用它,告訴resharper,它會停止抱怨。

11

我覺得特別有明確定義的編碼標準冗餘:

Name // Property 
_name // Member field 
name // local variable 

使用this.<whatever>只是似乎是更多的工作。

+0

這仍然不能解決基地。限定符功能。 – 2013-07-16 08:35:58

12

最好,我使用this只是爲了防止之間(可能)屬性和功能參數

public class thing 
{ 

    private string name; 

    public thing(string name) 
    { 
     this.name = name; // will set private string name to param string name 
    } 

} 

,如果你已經在某一類的環境中工作的模糊性,它不是那麼很難保持這個記住,並且我不需要提醒我每次處理一個地址時都要處理一個局部變量。

所以我認爲resharper在這一個權利。

5

使用此的一個優點。是intellisense。它縮小了你可以更快選擇的東西的清單。

+4

你可以通過按CTRL + SPACE不用這個 – oleksii 2011-05-04 14:52:00

+0

@oleksii來使用Intellisens:我不知道 - 每天學習新的東西! – n8wrl 2011-05-04 14:58:57

+0

任何時候,也有CTRL + SHIFT +空格,我不記得有什麼區別 – oleksii 2011-05-04 15:02:40

6

我個人認爲使用this這個關鍵字是個好習慣,因爲它明確標記了prorerty/method/etc是否屬於對象實例。這是非常有用的,然後私有成員的命名使局部變量是無法區分私有成員:

/// some pretty long method 
/// ... 
frameCount += 1; // is it private memeber or some local defined above? 

不用說,它可能會更好沒有在所有比inconsistenly使用使用它。

但是我發現持續使用this會使代碼看起來很「嘈雜」,this是無用的干擾。國際海事組織,最好使用專用_前綴命名爲私有成員:

/// some pretty long method 
/// ... 
_frameCount += 1; // it's clearly private memeber! 

它也快得多輸入。