Foo()vs this.Foo()

|                                                                                                                       
已邀请:
正如这里的其他答案所指出的,这在很大程度上取决于样式。 在没有without1ѭ的情况下,多次调用
Foo()
会是明确的,但有时可能会增加清晰度。例如:
EventHandler foo = GetEventHandlerFoo();
EventHandler baz = GetEventHandlerBar();
foo();
this.Bar();
baz();
在这种情况下,前缀“ 1”有助于使方法调用从委托调用中脱颖而出。 这有必要吗?不,拉塞五世(Lasse V. Karlsen)正确地指出ѭ1只是对命名约定的一种代名词,以使其明确。 但是我发现出于类似的原因,我会经常在本地属性上使用“ 5”前缀,而这又是一个风格问题。     
如果要使用它,请使用它。 如果您不想使用它,请不要使用它。 这里没有正确的答案。 如果出于某种原因,您有一个命名约定,其中仅名称不足以确定您要查看的是局部变量,方法参数,实例字段,属性还是方法,则应修复命名约定,而不是用ѭ1前缀前缀以将其与局部变量区分开。     
我认为这归结为语法与语义的问题。
this.Foo()
的参数非常明确地表示Foo()是什么以及它来自哪里。毫无疑问,它是传递给方法的参数,还是声明为who-knows-where的静态类。这是当前对象,期间的一种方法。少了什么,您就放弃了明确的语义,而希望使用更严格的语法。 明显的反对意见是:将鼠标悬停在Ctrl + click上。     
这是一种风格。有时人们认为它使代码更清晰-显然,某些人发现将方法调用的目标明确化是有帮助的。我个人认为,I8的虚假用法会分散注意力。     
此示例演示了如何使用
this
关键字来显式描述变量的范围:
class Item
{
    int id;

    public Item (int id)
    {
        this.id = id;
    }

}
    
我总是使用
this.
,因为它明确显示了事物的位置。我什至不使用重构工具来做到这一点。我用手打字。     

要回复问题请先登录注册