先说说今天的情况吧,今天下了一天的雨,突然感觉一下子感到好冷啊,赶紧找一件外套。到了教室,坑爹的教室的网一会一连上一会一段,到最后都连不上了。。。哎
下午可有网了,网速比蜗牛爬的还慢。。好了,切入正题吧,开始我的博客之旅。
今天上午老师讲了C#中的委托和事件,我记得上学期学过这个,但是对这个知识点很模糊,今天差不多搞得相对清楚点,再加上自己在网上自学,应该差不多了。但是还有许多不知道的地方,看来是学无止境呢。
委托,是一种可以把引用存储为函数的类型.委托的声明非常类似于函数,但是不带函数体,且要用delegate关键字.委托的声明指定了一个返回类型和一个参数列表,在定义了委托之后,就可以定义该委托类型的变量.接着把这个变量初始化为与委托有相同返回类型和参数列表的函数引用.之后就可以运用委托变量调用这个函数,就像该变量是一个函数一样.
如果要在C#中定义一个事件,首先你要创造一个delegate(委派),用他来定义一个你所想使用事件的标签,然后你才能使用event关键字,在这个委派的基础上定义一个事件.
两点需要注意的是:第一,首先你要创造一个委派,第二,根据你所创造的委派来定义一个事件,这才是一个完整的事件定义.
举个例子
namespace Delegate {
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
class Program {
private static void EnglishGreeting(string name) {
Console.WriteLine("Morning, " + name);
}
private static void ChineseGreeting(string name) {
Console.WriteLine("早上好, " + name);
}
//注意此方法,它接受一个GreetingDelegate类型的方法作为参数
private static void GreetPeople(string name, GreetingDelegate MakeGreeting) {
MakeGreeting(name);
}
static void Main(string[] args) {
GreetPeople("Jimmy Zhang", EnglishGreeting);
GreetPeople("张子阳", ChineseGreeting);
Console.ReadKey();
}
}
}我认为委托就是一个类,定义了方法的属性。