Xen*_*ate 15 c# methods delegates member
我把它作为我的'KeyEvent'类的成员之一:
private delegate void eventmethod();
Run Code Online (Sandbox Code Playgroud)
和构造函数:
public KeyEvent(eventmethod D)
{
D();
}
Run Code Online (Sandbox Code Playgroud)
我想要做的不是在那里调用D(),我想将该方法(D)存储为KeyEvent的成员变量,所以类似于:
stored_method = D();
Run Code Online (Sandbox Code Playgroud)
然后在另一个KeyEvent方法中,执行以下操作:
stored_method();
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Eil*_*lon 10
你已经拥有了很多代码.只需创建一个右代理类型的成员字段,并将参数保存到它,就像使用任何其他数据类型一样.
private eventmethod MySavedEvent;
public void KeyEvent(eventmethod D) {
// Save the delegate
MySavedEvent = D;
}
public void CallSavedEvent() {
if (MySavedEvent != null) {
MySavedEvent();
}
}
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
private Action CallBackFunction {get; set;}
public KeyEvent(Action callback) {
CallBackFunction = callback;
}
Run Code Online (Sandbox Code Playgroud)
哪个可以通过以下方式实例化:
new KeyEvent(MyFunction);
Run Code Online (Sandbox Code Playgroud)
其中MyFunction是该类中某些函数的名称
然后,KeyEvent类可以使用以下命令调用该函数:
CallBackFunction();
Run Code Online (Sandbox Code Playgroud)
Action类还允许传入强类型参数,Func类可用于返回结果的方法.
| 归档时间: |
|
| 查看次数: |
10110 次 |
| 最近记录: |