我正在尝试在静态方法中使用this
关键字,但编译器不允许我使用它。
为什么不呢?
答案 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"];