2015-10-17 16 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