【发布时间】:2012-05-22 17:13:58
【问题描述】:
我使用StyleCop 中的一组自定义规则以及它的 ReSharper 插件在我键入时自动检查我的代码。
StyleCop 中的规则SA1101 规定,对当前类成员的调用需要以this. 开头,以表明它实际上是在当前类中定义的。
有没有办法设置它,所以当我去自动完成班级成员时,它会自动添加 this. 前缀,所以我不必记住如何输入或添加它之后呢?
让我们以public bool Running { get; set; } 为例:
我输入“Run”+Tab,现在输出为Running,但我希望输出为this.Running。
这将节省大量时间和打字。
编辑
请注意,resharper 中的选项 ReSharper => Options => Code Editing => C# => Formatting Style => Other => "Force 'this.' qualifier for instance member"(如 Jon 所述)无法按预期工作。在语句末尾添加; 时(这是可以接受的),或者在将this. 添加到类成员的选项卡之后。
【问题讨论】:
-
这条规则适用于您的编码风格吗?我能想到始终使用
this限定成员的唯一原因是避免名称与方法参数冲突,即,您有一个支持字段name和一个方法参数name。但是,如果您对成员变量的风格类似于_name,那么到处使用this只会使代码IMO混乱。 -
不想成为一个聪明人,但如果你自己经历并添加前缀,它可能会节省你的时间。
-
@EdS.:请注意,该规则适用于 current 类的成员,而不是其任何基类的成员。因此,如果您始终使用和省略它,它确实提供了一定程度的信息。
-
@Jon:一致性总是好的,是的,但是除了我之前提到的之外,它还有什么用途?它是否真的帮助您知道如果您看到
this,那么该成员是在当前类中定义的?我只是不认为这很有用,尤其是在 Visual Studio 中,它可以简单地跟踪代码并找到定义和覆盖的地方。
标签: c# visual-studio-2010 resharper