0

我正在为我的 C# 项目使用 Resharper。

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

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

任何人都可以澄清他们是否听说过这样的事情,或者您是否觉得多余的评论只是 Resharper 的观点,因为这种说法似乎有点荒谬。

4

5 回答 5

9

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

你是否有风格上的反对意见是另一回事。我敢肯定,如果 ReSharper 更适合您,可以将其配置为忽略这些用途。

于 2012-10-08T13:18:22.883 回答
5

其他答案已经很好地解释了,要补充一件事:this有时可以派上用场:

public class User
{ 
    private string firstname;

    public User(string firstname)
    {
       this.firstname = firstname;
    }
}

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

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

于 2012-10-08T13:31:53.407 回答
2

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

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

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

于 2012-10-08T13:18:50.300 回答
1

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

于 2012-10-08T13:18:24.843 回答
1

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

在运行时,“this”总是指当前对象实例。许多开发人员根据编码风格使用下划线前缀来指示类成员变量。

于 2012-10-08T13:21:32.080 回答