【问题标题】:Using this keyword in c# Visual studio vs Stylecop [closed]在c#Visual Studio vs Stylecop中使用这个关键字[关闭]
【发布时间】:2016-09-19 22:25:50
【问题描述】:

我正在开发一个 Windows 服务 C# 项目,我是第一次使用 C#。

对于相同的this 关键字,我从 VS 以及 Stylecop 获得了 2 个不同的建议。 (我知道,this关键字指的是当前类的实例)

所以我删除了这个关键字,我得到了 stylecop 建议

SA1101 : CSharp.Readability : 对 serializeBackupFilePath 的调用必须 以“这个”开头。前缀表示该项目是 班级。

所以,我在这里感到困惑,因此具有this 关键字的构造函数和没有this 关键字的构造函数之间会有什么区别 (对不起我的英语不好)

【问题讨论】:

  • 这纯粹是见仁见智。 VS 开发者和 StyleCop 开发者的意见不一定一致。
  • 虽然这主要是一种意见,但我想在这种情况下我会关注 VS。没有this,它更容易阅读,而且你不会丢失任何东西。如果您担心(不)将变量与本地对象关联(StyleCop 想要解决的问题),请改为为您的成员变量添加自定义且较短的前缀,例如叫它mSerializeBackupFilePath

标签: c# visual-studio-2012 stylecop


【解决方案1】:

我不喜欢使用this。但是,由于您对参数和类成员使用相同的命名约定,因此如果没有它,可能很难区分这两者。

由于您使用的是 C#,因此我建议您使用此命名约定以避免需要使用 this 来明确指定您的意思的情况:

  • _name 私人班级成员
  • Name 用于公共类成员、常量和方法名
  • name 用于参数和局部变量

StyleCop 对SA1101 的官方描述是:

只要代码包含对本地类的实例成员或不以“this.”为前缀的基类的调用,就会违反此规则。当存在基类成员的本地覆盖时,会出现此规则的例外情况,并且代码打算直接调用基类成员,绕过本地覆盖。在这种情况下,调用可以使用“base.”而不是“this.”作为前缀。

默认情况下,StyleCop 不允许使用下划线或 m_ 来标记本地类字段,而支持“this.”前缀。使用 'this.' 的优点是它同样适用于所有元素类型,包括方法、属性等,而不仅仅是字段,使得对类成员的所有调用都可以立即识别,无论使用哪个编辑器查看代码.另一个优点是它在实例成员和静态成员之间创建了快速、可识别的区别,它们没有前缀。

使用“this.”前缀的最后一个好处是可以输入 this。将导致 Visual Studio 显示 IntelliSense 弹出窗口,使开发人员可以快速轻松地选择要调用的类成员。

我完全不同意这一点,但也许它可以帮助您决定是否使用this

顺便说一句:this has already been discussed StyleCop's Github.
官方建议禁用SA1101

【讨论】:

  • 是的.. 感谢禁用 SA1101
猜你喜欢
  • 2010-09-22
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 2015-01-21
  • 2013-03-15
  • 1970-01-01
相关资源
最近更新 更多