委托笔记
剛寫了段程序,總算稍微理解了下委托,留下備忘。
定義:
1?public?delegate?string?DelegateTest(string?sss);類中實例化委托:
?1?public?class?TestClass?2?????{
?3?????????public?event?DelegateTest?_delegateTest;
?4?
?5?????????public?string?BeginDelegate()
?6?????????{
?7?????????????if?(_delegateTest?!=?null)
?8?????????????????return?_delegateTest("ssssssss");
?9?????????????else
10?????????????????return?"1331";
11?????????}
12?????}
調用的時候,直接調用TestClass中的BeginDelegate方法,
為實例化的委托添加方法
?1?public?class?ObjClass?2?????{
?3?????????public?ObjClass(TestClass?tc)
?4?????????{
?5?????????????tc._delegateTest?+=?new?DelegateTest(typeBj);
?6?????????}
?7?
?8?????????public?string?typeBj(string?sssss)
?9?????????{
10?????????????Console.WriteLine(sssss);
11?
12?????????????return?sssss?+?"123132132";
13?????????}
14?????}
15?
16?????public?class?ObjClass1
17?????{
18?????????public?ObjClass1(TestClass?tc)
19?????????{
20?????????????tc._delegateTest?+=?new?DelegateTest(typeJJ);
21?????????}
22?
23?????????public?string?typeJJ(string?sssssss)
24?????????{
25?????????????Console.WriteLine(sssssss?+?"123123132");
26?
27?????????????return?sssssss?+?"abcdefghijklmn";
28?????????}
29?????}
主方法:
?2?????{
?3?????????public?static?void?Main()
?4?????????{
?5?????????????TestClass?tc?=?new?TestClass();
?6?
?7?????????????ObjClass?oc?=?new?ObjClass(tc);
?8?????????????ObjClass1?oc1?=?new?ObjClass1(tc);
?9?????????????string?s?=?tc.BeginDelegate();
10?
11?????????????Console.ReadKey();
12?????????}
13?????}
主方法里調用tc.BeginDelegate();
清除委托中的方法
1?tc._delegateTest?-=?new?DelegateTest(oc1.typeJJ);
?
?
public?delegate?string?DelegateTest(string?sss);
????public?class?TestClass
????{
????????public?event?DelegateTest?_delegateTest;
????????public?string?BeginDelegate()
????????{
????????????if?(_delegateTest?!=?null)
????????????????return?_delegateTest("ssssssss");
????????????else
????????????????return?"1331";
????????}
????}
????public?class?ObjClass
????{
????????public?ObjClass(TestClass?tc)
????????{
????????????tc._delegateTest?+=?new?DelegateTest(typeBj);
????????}
????????public?string?typeBj(string?sssss)
????????{
????????????Console.WriteLine(sssss);
????????????return?sssss?+?"123132132";
????????}
????}
????public?class?ObjClass1
????{
????????public?ObjClass1(TestClass?tc)
????????{
????????????tc._delegateTest?+=?new?DelegateTest(typeJJ);
????????}
????????public?string?typeJJ(string?sssssss)
????????{
????????????Console.WriteLine(sssssss?+?"123123132");
????????????return?sssssss?+?"abcdefghijklmn";
????????}
????}
????public?class?MainClass
????{
????????public?static?void?Main()
????????{
????????????TestClass?tc?=?new?TestClass();
????????????ObjClass?oc?=?new?ObjClass(tc);
????????????ObjClass1?oc1?=?new?ObjClass1(tc);
????????????tc._delegateTest?-=?new?DelegateTest(oc1.typeJJ);
????????????string?s?=?tc.BeginDelegate();
????????????Console.ReadKey();
????????}
????}
?
?
轉載于:https://www.cnblogs.com/treeyh/archive/2007/08/09/849486.html
總結
- 上一篇: 梦到蛇追小孩是什么意思
- 下一篇: JUnit 4 与 JUnit 3