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

时间:2008-09-25 16:08:23

标签: c# .net

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

为什么不呢?

7 个答案:

答案 0 :(得分:64)

这很简单。关键字“this”返回对包含它的类的当前实例的引用。静态方法(或任何静态成员)不属于特定实例。它们存在而不创建类的实例。静态成员有多少in depth explanation以及在MSDN文档中使用它们的原因/时间。

答案 1 :(得分:8)

另外请注意,从Static方法中,您可以访问该类的静态成员。使下面的例子有效,有时非常有用。

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

答案 2 :(得分:6)

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

中的静态成员

答案 3 :(得分:1)

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

答案 4 :(得分:1)

如果要在静态函数中使用类的非静态函数。在静态函数中创建类的对象。 对于Eg

    Class ClsProgram(){
public static void staticfunc(){
ClsProgram Obj = new ClsPrograM()
Obj.NonStaticFunc();
}
public void NonStaticFunc(){}
}

答案 5 :(得分:0)

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

答案 6 :(得分:0)

对于OP的问题,请参阅接受的答案。这个答案适用于那些正在寻找静态方法中使用快速衬垫的人。

如果类是一个表单,并且它是打开的(你也需要表单的名称),这可以在静态方法中调用;

Application.OpenForms["MainForm"];