C#属性和this-keyword

时间:2010-08-25 08:59:34

标签: c# properties this-keyword

我应该何时在代码中使用this - 关键字作为属性?

public class MyClass {
    public string MyString { get; private set; }
    public void MyMethod() {
        OtherClass.DoStuff(MyString); // Or this.MyString?
    }
}

我知道如果属性的类型相同,那么 要使用this.才能使其正常工作。

public string Emailer Emailer { get { return _emailer; } }

在课程中使用{strong>属性甚至方法this.有哪些指导原则?我知道它在编译代码中没有任何区别。这就是......屏住呼吸......最佳实践。

3 个答案:

答案 0 :(得分:4)

做你和你的团队最可读的事情。有些人喜欢明确;我实际需要时只指定this。它对编译的代码没有任何影响。

答案 1 :(得分:2)

如果参数名称和实例成员具有相同的名称,则需要使用this

像:

public class MyClass
{
    private string something;

    public void SomeMethod (string something)
    {
        this.something = something;
    }
}

但我建议你以这种方式选择你永远不需要使用this的名字。否则只是要求麻烦 - 迟早你会忘记this某处,并且很难调试你的代码。

答案 2 :(得分:1)

是否使用this主要是偏好问题,因此没有正确或错误的答案。尽管有开发者,它可能会成为一场宗教战争。我经常发现最好以这种或那种方式就团队达成协议,然后使用StyleCop来执行决定。

我个人更喜欢简洁,只有在实际需要时才使用this。但是我会在这里选择代码库一致性,因为这是一个相当小的问题。

有一些情况明确需要它。我想到了扩展方法,在某些情况下可以消除标识符的歧义。我发现这些相当罕见。