为什么不能在.Net的静态方法中使用关键字" this"?

时间:2020-03-06 14:43:48  来源:igfitidea点击:

我试图在静态方法中使用this关键字,但是编译器不允许我使用它。

为什么不?

解决方案

这很简单。关键字" this"返回对包含它的类的当前实例的引用。静态方法(或者任何静态成员)不属于特定实例。它们存在而没有创建类的实例。在MSDN文档中,有更多关于深度静态成员以及为什么/何时使用它们的更深入的解释。

静态方法是特定于类的,而不是特定于实例的。 " this"表示运行时类的实例,因此不能在静态上下文中使用,因为它不会引用任何实例。
相反,应该使用该类的名称,并且我们将只能访问该类中的静态成员。

这表示当前的实例对象,并且没有使用静态方法的实例。

另外要注意的是,我们可以通过Static方法访问该类的成员或者将其静态化。使下面的示例有效,有时非常有用。

public static void StaticMethod(Object o)
{
     MyClass.StaticProperty = o;
}

静态方法中没有" this"对象引用。