何时在变量赋值中使用“this”

时间:2014-09-28 01:37:06

标签: c#

如果我使用"这个"它使MainInst传递的实例;如果我不打字。它不会使变量等效于同一个实例..?这是什么意思,什么时候用于这种类型的任务。

 class Phonebook
{
    private MainWindow MainInst;

    public Phonebook(MainWindow MainInstance){
        this.MainInst = MainInstance;
    }

}

VS

 class Phonebook
{
    private MainWindow MainInst;

    public Phonebook(MainWindow MainInstance){
        MainInst = MainInstance;
    }

}

2 个答案:

答案 0 :(得分:3)

在这种情况下,它无关紧要,因为它是毫不含糊的。

但如果你有:

class Phonebook
{
    private MainWindow MainInst;

    public Phonebook(MainWindow MainInst){
        MainInst = MainInst;
    }
}

然后代码就不再正确了。它会将参数分配给自己。您必须使用this来更正它。

我的建议:对类,本地人和私人成员使用不同的命名约定。一个例子是:

class Phonebook
{
    private MainWindow _mainInst;

    public Phonebook(MainWindow mainInst){
        _mainInst = mainInst;
    }
}

现在,您可以乍看之下将一个局部变量(因为它以小写字母开头)分配给私有成员(因为它以下划线开头),而不使用this。< / p>

请注意,根据Alexei的评论,这只是许多可能的约定之一。 Microsoft建议{em>公共类/成员these guidelines。 C#代码中广泛接受的约定是:

  • 类,属性和事件应以大写字母开头
  • 接口应以I开头,后跟大写字母
  • 当地人应该以小写字母开头。

这些都不应包含下划线(单元测试方法除外)。

至于私人会员,有很多约定,所以选择你自己的。

  • 有些人更喜欢将私有成员命名为局部变量,并且明确使用this
  • 有些人在前面的例子中加上下划线
  • 有些使用前缀,例如mym_(匈牙利表示法)......

即使是Microsoft uses Hungarian notation也适用于他们的私人会员,但not consistently。你应该选择一个约定并坚持下去。

答案 1 :(得分:2)

如果在同一范围内有多个同名变量,则使用“this”关键字。例如,如果您的构造函数具有签名public Phonebook(MainWindow MainInst),那么您必须说this.MainInst = MainInst以避免歧义。