0

我喜欢对所有非局部变量使用“this”语句:用于属性、类变量等。我这样做是为了便于代码阅读,便于理解该变量的来源。

object someVar;

object SomeProperty { get; set }

void SomeMethod(object arg1, object arg2)
{
  this.SomeProperty = arg1;
  this.someVar = arg2;
}

您如何看待,使用“this”的正确方法是什么?

4

6 回答 6

6

this是一件好事。this消除歧义。

Ô_o:

public class Foo
{
    private string bar

    public Foo(string bar)
    {
        bar = bar;
    }
}

下划线很蹩脚(它是 C#,不是 C++):

public class Foo
{
    private string _bar

    public Foo(string bar)
    {
        _bar = bar;
    }
}

耶:

public class Foo
{
    private string bar

    public Foo(string bar)
    {
        this.bar = bar;
    }
}
于 2009-03-16T11:18:33.653 回答
2

我以前只在构造函数中使用它,以便我可以将成员变量与 ctor 参数同名以保持一致性。既然我正在使用auto properties,我根本不会在任何地方使用它,除非我有我不想作为属性的成员变量(我只是不喜欢拥有完全私有的属性;不知何故似乎很奇怪)。

于 2009-03-16T11:17:36.620 回答
1

通常我会使用“this”关键字来消除类/对象变量和方法参数之间的任何歧义。

于 2009-03-16T11:21:36.707 回答
1

使用有两个强制性角色

  • 当您必须打破函数参数、局部变量名称和属性之间的歧义时。如果我要使用this,它只会出现在构造函数中,因为它是唯一可以使用相同名称的地方。

    void SomeMethod(object SomeProperty, object someVar) { this.SomeProperty = SomeProperty; this.someVar = someVar; }

  • 每当您需要将对当前对象的引用传递给另一个方法时。必须经常传递你的对象是一种代码味道。

其他任何事情都可能过于冗长。不要使用你不需要的东西。

于 2009-03-16T11:25:38.223 回答
1

我喜欢在分配给继承的属性时使用它。

于 2009-03-16T11:29:49.353 回答
0

我只在构造函数或方法参数与某种成员变量发生冲突时使用它。可能是属性或字段或其他任何东西。不过,这种情况并不经常发生。所以我很少使用它。

我认为 ReSharper 删除this.了不需要的地方。也许默认情况下......它在这里,但不确定它是否是默认行为:p

于 2009-03-16T11:25:55.027 回答