可能重复:
从静态方法c#调用非静态方法
我们可以从静态方法创建实例中调用非静态方法.码:
public class Foo
{
public void Data1()
{
}
public static void Data2()
{
Foo foo = new Foo();
foo.Data1();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我听说可以在委托的帮助下从静态方法调用非静态方法.这是真的吗?如果是,那怎么样?请指导我提供示例代码.谢谢.
dle*_*lev 10
这是通过委托调用非静态方法的一种方法.请注意,这是一个两步过程,因为要调用非静态方法,您绝对需要该类的实例.我还要注意,几乎可以肯定有更好的方法来做你想做的事情,因为需要从静态方法调用非静态方法,尽管不想使用对象实例,这听起来像非静态方法应该是静态的.
public class MyClass
{
private static Action NonStaticDelegate;
public void NonStaticMethod()
{
Console.WriteLine("Non-Static!");
}
public static void CaptureDelegate()
{
MyClass temp = new MyClass();
MyClass.NonStaticDelegate = new Action(temp.NonStaticMethod);
}
public static void RunNonStaticMethod()
{
if (MyClass.NonStaticDelegate != null)
{
// This will run the non-static method.
// Note that you still needed to create an instance beforehand
MyClass.NonStaticDelegate();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30723 次 |
| 最近记录: |