作者popcorny (毕业了..@@")
看板C_Sharp
标题Re: [问题] event 和 delegate
时间Mon Nov 15 17:43:25 2010
有没有加event的差异就在下面标红色的部分
有加event的话 不能直接对定义此delegate做触发 而只能+= -=
而没加event的话 可以触发delegate 也可以+= -=
所以使用event此keyword的目的好处是你可以隐藏触发此event的逻辑
但又可外部去透过+= -=注册event listener
============================
using System;
class Test
{
public static void myTest()
{
Console.WriteLine("hello");
}
public static void Main(string[] args)
{
TestA a = new TestA();
a.testEvent1 += myTest;
a.testEvent2 += myTest;
a.testEvent1();
//a.testEvent2(); this is invalid
a.fireEvent2();
}
}
class TestA{
public delegate void test();
public test testEvent1;
public event test testEvent2;
public void fireEvent2()
{
testEvent2();
}
}
※ 引述《QQ29 (我爱阿蓉)》之铭言:
: 你好~
: 我看了书 消化一下
: event这个关键字 我把它删掉 也一样可以编译成功
: event这关键字是不是只是一个强调的形容词
: 并不是真的一定要加
: delegate给我的感觉样是 C++的typedef
: 我的感觉像是 用这个type去new一个instance
: 而你也可以不用加上event这关键字
: 在语法上差异
: event 在 给他值时 需要用+= 给一个instance
: 不加event 就可以直接用 +.....
: 这边不知道有没有根深层的解释 我只是片面的觉得是这样
: 不知有没有解读错误@@
: 请指教
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.239.119
※ 编辑: popcorny 来自: 114.32.239.119 (11/15 17:44)
1F:→ Deadshot465:test这个型别在....? 11/15 18:10
2F:→ Deadshot465:喔喔看到了@@ 11/15 18:10
3F:推 Deadshot465:话说其实C# 4.0 In a Nutshell也有对Event做解释 11/15 18:18
4F:→ Deadshot465:原po可以去天珑稍微翻一下 11/15 18:19