为什么不能在.Net的静态方法中使用关键字“this”?
我试图在静态方法中使用this
关键字,但编译器不会允许我使用它。
为什么不?
这是一个容易的。 关键字“this”返回一个对包含它的类的当前实例的引用。 静态方法(或任何静态成员)不属于特定的实例。 它们存在而不创build类的一个实例。 关于什么是静态成员以及为什么/何时在MSDN文档中使用它们,有更深入的解释 。
作为附加说明,从Static方法中,可以访问该类的静态成员。 使下面的例子有效,有时非常有用。
public static void StaticMethod(Object o) { MyClass.StaticProperty = o; }
静态方法是类特定的,而不是实例特定的。 “this”表示运行时类的一个实例,所以不能在静态上下文中使用,因为它不会引用任何实例。 相反,应该使用类的名称,并且只能访问类中的静态成员
这表示当前的实例对象,没有静态方法的实例。
静态方法中没有this
对象引用。
如果要在静态函数中使用类的非静态函数,请在静态函数中创build类的对象。 例如
Class ClsProgram(){ public static void staticfunc(){ ClsProgram Obj = new ClsPrograM() Obj.NonStaticFunc(); } public void NonStaticFunc(){} }
对于OP的问题,请参阅接受的答案。 这个答案是为那些正在寻找一个快速的class轮使用静态方法。
如果这个类是一个表单,并且它是开放的(你也需要这个表单的名字),这个可以在一个静态方法中调用;
Application.OpenForms["MainForm"];