在C#中,是否需要"this"关键字?

Den*_*ail 6 c#

在以下构造函数中,是否需要'this'关键字?我知道我可以删除它,它符合,一切都很好.如果我省略'this'那将导致我的问题在路上?是否认为"这个"被认为是不好的做法?

    // Constructor:
    public Employee(string name, string alias)
    {
        // Use this to qualify the fields, name and alias:
        this.name = name;
        this.alias = alias;
    }
Run Code Online (Sandbox Code Playgroud)

And*_*are 22

不,this几乎在所有情况下都是纯粹可选的.在您的示例中需要它的唯一原因是消除局部变量和参数以及碰巧具有相同标识符名称的成员变量之间的歧义.

您可以this通过将参数或字段重命名为唯一的内容来避免使用.


Sma*_*ery 9

是的,您需要在代码示例中使用它.C#将始终假设您的意思是局部变量,因此如果成员变量和局部变量存在同名,则必须使用this,否则将假定您引用的是局部变量.

在你的代码示例中,如果你忽略了this,你实际上是为自己分配name(或alias)的值(从而没有完成任何事情).


J.H*_*rix 5

在下面的情况下this是绝对必要的.但是你可以通过仔细选择变量名来绕过它.我谦虚地认为,下面的例子没有任何问题,我不介意使用this.实际上,this即使在我的IDE中提示智能感知和自动完成时,我也经常使用它.

internal class Something
{
    private string name;
    public Something(string name)
    {
        this.name = name;
    }
}
Run Code Online (Sandbox Code Playgroud)