C#:在构造函数中使用this关键字

4

在C#中构造函数中使用this关键字是否可行?(即,在构造函数中引用实例是否可行)

以下是一个简单的示例:

public class Test{

 public Test()
 {
    Type type = this.GetType()
 }

}

是的。请看这里:http://www.codeproject.com/KB/dotnet/ConstructorsInCSharp.aspx - FailedDev
2个回答

5

是的,在构造函数中可以使用this,但不能在字段初始化程序中使用。

因此,以下代码无效:

class Foo
{
    private int _bar = this.GetBar();

    int GetBar()
    {
        return 42;
    }
}

但是这是允许的:

class Foo
{
    private int _bar;

    public Foo()
    {
        _bar = this.GetBar();
    }

    int GetBar()
    {
        return 42;
    }
}

1
你是在寻找类似这样的东西吗?
public class Test{

 private string strName;
 public Test(string strName)
 {
    this.strName = strName;
 }

}

我认为在类的每个部分使用this标识符是很好的选择...属性、方法、属性,因为它更具有暗示性,可以更快地了解你正在修改或使用什么,在复杂的类或大型类中,它可以帮助你更快地知道你正在使用什么,但正如我所说,这只是我的观点。


1
“this” 对我来说只是多余的冗长,没有任何附加价值,但每个人有自己的喜好。 - Ed S.
是的,它只是像其他保留字(如const、readonly)一样具有暗示性,仅供程序员使用。在我的例子中,当您使用与全局属性/属性名称完全相等的参数时,它是必需的,并且如果您正在使用局部变量、参数或带有“this”的全局变量,则不会感到困惑。但正如你所说,因人而异。 - Hector Sanchez
1
我使用下划线来避免成员变量的冲突。因为我不喜欢memberVariable这种命名方式,会导致方法签名冲突,需要到处使用this关键字。另外,我认为你可能想说的是"Explicit"而不是"Allusive"。 :) - Ed S.
嘿嘿,是的,也许 xD。而且你说得对,如果不使用它,方法中可能会发生冲突。为了避免未来的问题,我认为最好还是使用它,这并不会对你造成太大的伤害,就像这个“5个字符”的东西一样。xD - Hector Sanchez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接