'this'关键字是多余的

时间:2012-10-08 13:16:34

标签: c# this-keyword

我在我的C#项目中使用Resharper。

我创建了一些私有全局变量,通常我使用'this'关键字作为变量名的前缀(例如this.FirstName)。

Resharper显然希望我使用下划线而不是'this',但实际上足够大胆地声明'this'关键字是多余的。在MSDN网站上没有提到这一点;我的印象是,无论你使用什么命名约定(使用_或this。或大写/小写),最终都取决于用户的选择(即使MSDN网站混合了一点(尽管从不相同)类))。

任何人都可以澄清他们是否听过这样的话,或者你觉得多余的评论只是Resharper的意见,因为声称似乎有些荒谬。

5 个答案:

答案 0 :(得分:9)

“冗余”意味着不必要。由于在这些情况下编译器显然不需要关键字,因此ReSharper是对的。

你是否有风格异议是另一回事。我确信ReSharper可以配置为忽略这些用途,如果这更适合你。

答案 1 :(得分:5)

其他答案已经解释得很清楚,有一点需要补充:this有时会派上用场:

public class User
{ 
    private string firstname;

    public User(string firstname)
    {
       this.firstname = firstname;
    }
}
此处需要

this,因此它知道您指的是哪一个,因为它们的名称相同。

除了这是个人偏好之外,在大多数情况下它是多余的,但是如果你认为它是值得的,你可以从Resharper的警告中删除它。如果您使用的是Stylecop插件,它将在选项中的代码编辑下,也可以在代码清理配置文件中。

答案 2 :(得分:2)

就我个人而言,我同意Resharper并且是我使用的编码风格:

public class Foo
{
    private readonly string _bar;
    public Foo(string bar)
    {
        _bar = bar;
    }
}

使用this关键字的前缀字段当然是个人选择的问题。

答案 3 :(得分:1)

作为解释,当人类阅读代码以及私有访问修饰符时,this关键字最有用。但它并不是绝对必要的,因为它知道你指的是哪个字段,如果没有指定访问修饰符,它就知道隐式是私有的。

答案 4 :(得分:1)

如果我完全误解了你的帖子,请原谅我,但是在阅读之后我的第一反应是你可能不清楚在C#中使用“this”关键字。似乎使用类成员名称的命名法与关键字“this”隐含的范围分辨率之间的区别模糊不清。

在运行时,“this”始终引用当前对象实例。许多开发人员使用下划线前缀来指示类成员变量作为编码风格的问题。