什么时候用'this'(C#)作为前置成员的好规则?

noc*_*ura 15 c# coding-style

如果我正在访问成员字段,属性或方法,我将永远不确定何时应该使用'this'作为前缀.

我不是在询问需要它的情况,例如局部变量具有相同名称的情况.我说的是意义完全相同的情况.哪个更具可读性?我应该遵循哪些标准,最佳实践或经验法则?它应该在整个班级或整个代码库中保持一致吗?

Mar*_*ers 15

我不同意StyleCop的这一点,我甚至不确定StyleCop的意见是否应该被解释为微软的官方指南.它是Microsoft使用的内部工具,但并非所有团队都使用它,并非所有团队都使用所有规则.

this任何地方添加都不是必需的,通常只会增加混乱.它并没有提高性能,我也不相信添加this所有代码都会提高可读性.

您可能会听到这样的论点,它更清楚地定义了变量的位置,但我认为如果您的类/方法如此冗长和复杂以至于难以确定声明某些内容的地方,那么您可能无论如何都应该重构它.如果使用单一责任规则并具有短函数,则变量是成员,函数参数还是局部变量应该是显而易见的.

正如你所指出的,有时它是必要的.例如,在构造函数中,如果要设置与参数同名的私有成员.

public class Foo
{
    private Bar bar;

    public Foo(Bar bar)
    {
        this.bar = bar;
    }
}
Run Code Online (Sandbox Code Playgroud)


Kev*_*cht 13

我建议使用Microsoft的指南,经StyleCop验证:http://blogs.msdn.com/sourceanalysis/

一般规则是,在成员之前添加"this".当它们在课堂上定义时,除非它们是静态的,否则你不能.

以下是直接来自StyleCop的规则:

SA1101: The call to {method or property name} must begin with the
'this.' prefix to indicate that the item is a member of the class.
Run Code Online (Sandbox Code Playgroud)