使用'this':哪里好,哪里不好

时间:2009-03-16 11:12:07

标签: c# .net coding-style this

我喜欢对所有非本地变量使用'this'语句:for属性,类变量等。我这样做是为了方便阅读代码,很容易理解这个变量的来源

object someVar;

object SomeProperty { get; set }

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

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

6 个答案:

答案 0 :(得分:6)

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

O_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;
    }
}

答案 1 :(得分:2)

我以前只在构造函数中使用它,这样我就可以使成员变量与ctor参数同名,以保持一致性。现在我正在使用auto properties,我根本不在任何地方使用它,除非我有成员变量,我不想要作为属性(我只是不喜欢完全私有属性;似乎有些奇怪)。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

使用有两个强制性角色

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

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

  • 每当需要将对当前对象的引用传递给另一个方法时。过于频繁地传递你的对象是一种代码味道。

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我只在构造函数或方法参数与某种成员变量发生冲突时才使用它。可以是属性或字段或其他。但这并不是经常发生的。所以我很少使用它。

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