1.)第一个问题我觉得委托和接口的应用惊人的相似,除了委托能把多个方法(也可以说是多个现实吧)添加到委托的变量当中,然后对变量进行调用,就能依次执行添加的方法。。而接口没这东西。。感觉除了这一点,没有别的不同了。。这两个东西的思想实在太像了,都是为了实现多态,感觉委托能做的,接口都能做(除了上面说的那点)。。那我们到底什么时候才用委托呢?两者到底有什么不同呢?希望能就理论,和实际的应用举个例子,谢谢!!
2.)第二个问题关于event关键字,事件..
namespace Delegate {
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
//新建的GreetingManager类
public class GreetingManager
{
//这里加了个event
public event GreetingDelegate MakeGreet; public void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}
}
class Program
{
private static void EnglishGreeting(string name)
{
Console.WriteLine("Morning, " + name);
} private static void ChineseGreeting(string name)
{
Console.WriteLine("早上好, " + name);
} static void Main(string[] args)
{
GreetingManager gm = new GreetingManager();
//声明了event后,就不能直接gm.MakeGreet=XXX来赋值了..
gm.MakeGreet += ChineseGreeting;
}
}
}
上面这段代码
public event GreetingDelegate MakeGreet;
这里加个event到底有什么意义?封装?有意义吗?加了之后无论前面的前缀是什么,都会默认变成private。。而且在对象赋值时还要使用+=或-=。。这样做的意义到底何在?
求各位大大帮忙解答委托 接口 事件
2.)第二个问题关于event关键字,事件..
namespace Delegate {
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
//新建的GreetingManager类
public class GreetingManager
{
//这里加了个event
public event GreetingDelegate MakeGreet; public void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}
}
class Program
{
private static void EnglishGreeting(string name)
{
Console.WriteLine("Morning, " + name);
} private static void ChineseGreeting(string name)
{
Console.WriteLine("早上好, " + name);
} static void Main(string[] args)
{
GreetingManager gm = new GreetingManager();
//声明了event后,就不能直接gm.MakeGreet=XXX来赋值了..
gm.MakeGreet += ChineseGreeting;
}
}
}
上面这段代码
public event GreetingDelegate MakeGreet;
这里加个event到底有什么意义?封装?有意义吗?加了之后无论前面的前缀是什么,都会默认变成private。。而且在对象赋值时还要使用+=或-=。。这样做的意义到底何在?
求各位大大帮忙解答委托 接口 事件
解决方案 »
- 关于“跪求System.Net.Mail发送邮件总是不稳定,有时成功有时失败”这个问题的最新回复,因为不让我连续回复,只能再发一贴了。
- 关于C#操作word文档的问题
- powerdesigner问题:在生成数据库时怎样把字段的中文说明一起加进去
- 关于C#远程访问数据库
- picturebox中的坐标轴问题
- C# winform 中margin属性的设置
- 请教关于C++/C#混合编程的问题
- Theard的困惑
- 急,一个日期比较的问题!!!
- 斑竹老爷,为啥扣俺信誉分!
- 查询mysql数据库时遇到的一个奇怪的问题
- c# 中里的Form1里的需要使用Form2里的datetimepicker里的时间值,怎么弄,自学C#编程的
event表名是个事件
错只是C#不允许你直接操作它而已,不代表它是private的。
没有事件一样可以做出“叠加”来,做法看《设计模式》的“观察者模式”。可能我没有说的很清楚。我的意思是,委托是对某一类用接口实现的需求的一种简化和抽象。委托能做的,是接口能做的事情的一个子集。我们知道,高级语言中的全部特性,无论是委托还是对象,甚至循环,在编译器处理后,统统都不存在了,全部可以用CPU能理解的那几百条指令等价实现(否则程序也没有意义了)。高级语言的语法特性,你从必要性的角度看,你想破脑袋你也想不明白它们为什么存在。没有委托就不能写程序了?没有接口就不能写程序了?没有抽象类就不能写程序了?显然都不是。你要从编程语言的抽象能力对于减少需要书写的代码数量,提高可读性,提高效率的角度去思考。
没有事件一样可以做出“叠加”来,做法看《设计模式》的“观察者模式”。可能我没有说的很清楚。我的意思是,委托是对某一类用接口实现的需求的一种简化和抽象。委托能做的,是接口能做的事情的一个子集。我们知道,高级语言中的全部特性,无论是委托还是对象,甚至循环,在编译器处理后,统统都不存在了,全部可以用CPU能理解的那几百条指令等价实现(否则程序也没有意义了)。高级语言的语法特性,你从必要性的角度看,你想破脑袋你也想不明白它们为什么存在。没有委托就不能写程序了?没有接口就不能写程序了?没有抽象类就不能写程序了?显然都不是。你要从编程语言的抽象能力对于减少需要书写的代码数量,提高可读性,提高效率的角度去思考。
我想你是误解我的意思了,我是在说event要用+=、-=的原因