2015-10-17 21 views
15

所以我有一個非常簡單的類,Id字段,Id可以在構造函數中設置。這真的是一個簡化?

通常,我將使用this來清楚地標識類屬性,而不是method方法參數。對我來說這似乎更清楚。

IDE0003希望我刪除this,並顯示消息「名稱可以簡化」,是正確的嗎?

這對我來說似乎不太清楚,並且還允許套管錯誤很容易導致id = id

enter image description here

+15

好吧,我想你已經說明了一切:不是每個「簡化」也是「澄清」 .. – TaW

+1

我認爲他們都編譯成同樣的事情。所以你只是簡化你沒有寫的東西。 –

+5

嗯,這些類似的問題似乎只有使用黑色編輯器窗口背景的程序員纔會問到。是的,那個燈泡很明顯。當背景輕時不會被它所困擾:)當然這是一種「簡化」,代碼少了。但是它在運行時絕對沒有區別,它肯定不會幫助您使用自動完成。 –

回答

7

this關鍵字幾乎總是是不必要的,見When do you use the "this" keyword?

允許殼體誤差容易導致id = id

,將產生其自己的另一警告:

分配到相同的變量作出;你的意思是分配別的東西嗎?

+2

C#區分大小寫。在這種情況下,它確實是一個簡化來刪除這個。 –

4

如果使用General Naming Conventions那麼this關鍵字是多餘的,因爲參數應該是id和財產應根據Naming GuidelinesId。因此,它似乎很清楚:

public int Id 
{ 
    get; 
    private set; 
} 


public VSOMessage(int id) 
{ 
    Id = id; 
} 

請注意,這些準則本身不說,使用或不使用this關鍵字,但因爲C#是區分大小寫,這將是一個簡化去除this關鍵字,但當你不使用命名約定那麼你可以命名屬性id而不是Id所以你應該在這種情況下使用this關鍵字。

+2

關鍵字['this'](https://msdn.microsoft.com/en-us/library/dk1507sz.aspx)對於此場景顯式非常有用:「要限定隱藏相似名稱的成員」。此外,不是每個成員變量都是一個屬性,一些屬性可能有一個後備變量(對於不可變對象尤其有用)。另外,爲靜態方法使用'this','base'和類名可以提高可讀性並鞏固意圖。 – ShooShoSha

29

這個問題有一個答案,說你可以配置編輯器來刪除行爲。我個人很喜歡「這個」

Tools > Options > Text Editor > C# > Code Style and check Qualify member access with 'this' 

Visual Studio 2015 - Change Light Bulb, Quick Action settings

+6

使用關鍵字'this'明確顯示變量存在的位置。如果它沒有以'this','base'或類的名稱(對於靜態方法)作爲前綴,則該變量的作用域是局部的,並且作爲方法是全局的。這使得意圖和可讀性比它的省略更清晰。 – ShooShoSha