methodinvoker的简单介绍
本文目录一览:
- 1、在c#里面如何定义这样一个函数?
- 2、C#中MethodInvoker与 EventHandler的区别
- 3、什么是事件和委托?
在c#里面如何定义这样一个函数?
public void 某函数()
{
int n=0;
..................
Funcint showTimesProc = delegate ()
{ //在函数中定义函数,显示信息
n = Convert.ToInt32(grd_from.Rows[current发送方使用第几个].Cells["col_times"].Value);
grd_from.Rows[current发送方使用第几个].Cells["col_times"].Value = n + nThisTime;
return 0;
};
if (!grd_from.InvokeRequired) showTimesProc();
else Invoke(new MethodInvoker(() = { showTimesProc(); }));
}
C#中MethodInvoker与 EventHandler的区别
如果没有参数的话,没区别。
MethodInvoker 是不带参数的委托。
EventHandler 是可带参数的委托。
什么是事件和委托?
委托实质上是一个类,是对方法的封装,委托内部有三个重要成员:目标,方法,前一个委托。普通代码里这样调用方法: aBird.Fly(); 封装到委托里,aBird 就是目标,Fly 就是方法。委托可以组成链,“前一个委托”用于支持这种链式结构。 MethodInvoker mi = new MethodInvoker(aBird.Fly); mi(); 这段和上面的 aBird.Fly 是一个效果,但不是直接调用。可以将 mi 传递到其他地方,再进行调用。委托在方法和调用方之间建立了间接性。 事件是基于委托的通信机制。如果一个对象的状态改变了,我们可能希望将这种改变通知给外界。从实现角度看,“通知”其实就是调用接收方的方法。困境在于,我们不知道谁对这些改变有兴趣,有多少人对这些改变有兴趣,所以,我们无法直接调用方法。.net中有两个办法解决这个问题,接口和委托。这两个的含义都是“约定”,目的则是“分离”,换句话说,就是:商量好了,分头行动。接口是对类成员的约定,委托是对参数和返回值的约定。对于简单的通知,接口有些麻烦,委托更好一些,所以,我们将一个委托加到类中,让它保存应该调用的方法。但光秃秃的一个字段有点难看,好像没穿衣服一样。为了让代码更好看,.net 引入了事件的概念。事件本质上是一个方法,事件提供 add, remove,将方法挂到这个委托中,或从此委托中移除。像这样: button1.Click += new EventHandler(button1_Click), 订阅事件, button1.Click -= new EventHandler(button1_Click), 退阅事件, 如果A订阅了B的事件,那么它们之间的引用关系是这样:B引用委托,委托引用A。这就是说,在退阅事件之前,A不会被当作垃圾回收,因为B包含对它的引用。 因此,委托和事件的区别是:委托与类,结构,接口,枚举是一类,而事件属类成员,和属性,方法,字段是一类。不过这种区分意义不大,应付考官而已。写代码的时候,谁会想这么多。
关于methodinvoker和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~