日期:2014-05-17  浏览次数:20884 次

C#中event关键字是怎么回事?
我知道如何定义委托,也知道如何使用委托,只是不知道为什么在共享委托的时候一定要加一个event关键字,转换成事件,如果不加的话,执行结果也是一样的。

------解决方案--------------------
event这个关键字将会把一般的委托转换为持殊的属性。具有Add和Remove方法的持殊委托属性。
------解决方案--------------------
引用:
event这个关键字将会把一般的委托转换为持殊的属性。具有Add和Remove方法的持殊委托属性。


+1
------解决方案--------------------
1、习惯叫法不同,习惯上比较喜欢叫XX事件,比例按钮事件,键盘事件,没有叫按钮委托,TextChanged委托的吧
2、第二点是刚刚发现的,定义了委托和事件
        public delegate void TestDelegate();
        public TestDelegate MyDelegate;
        public event TestDelegate MyEvent;

当输入My时出现的智能提示框前面的小图标不一样,委托的小图标是蓝色方块,事件的小图标是黄色闪电

3、第三点正是由第二点才联想到,代码如下:

    public partial class UserControl1 : UserControl
    {
        public delegate void TestDelegate();
        public TestDelegate MyDelegate;
        public event TestDelegate MyEvent;

        public UserControl1()
        {
            InitializeComponent();
        }
    }


然后在窗体上加上这个用户控件,在属性事件栏只有MyEvent没有MyDelegate

------解决方案--------------------
引用:
能不能举个例子,在某某情况下不加event关键字程序不能运行,或结果不同
事实上作为数据类型来讲,委托类型也可以使用get,set属性访问器来限定啊


所谓“使用get,set属性访问器来限定”不是还要你写代码嘛,而不是声明给编译器。何况,“get,set”也起不了什么作用。

比如用户可以轻易给一个委托赋值null,而对事件这样操作则编译器会给出编译异常。