委托笔记

刚写了段程序,总算稍微理解了下委托,留下备忘。

定义:

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     }


主方法:

 1 public class MainClass
 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);


 

 

ContractedBlock.gifExpandedBlockStart.gif
None.gifpublic delegate string DelegateTest(string sss);
None.gif
None.gif    
public class TestClass
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        
public event DelegateTest _delegateTest;
InBlock.gif
InBlock.gif        
public string BeginDelegate()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
if (_delegateTest != null)
InBlock.gif                
return _delegateTest("ssssssss");
InBlock.gif            
else
InBlock.gif                
return "1331";
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

None.gif
None.gif
None.gif    
public class ObjClass
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        
public ObjClass(TestClass tc)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            tc._delegateTest 
+= new DelegateTest(typeBj);
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
public string typeBj(string sssss)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            Console.WriteLine(sssss);
InBlock.gif
InBlock.gif            
return sssss + "123132132";
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

None.gif
None.gif    
public class ObjClass1
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        
public ObjClass1(TestClass tc)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            tc._delegateTest 
+= new DelegateTest(typeJJ);
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
public string typeJJ(string sssssss)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            Console.WriteLine(sssssss 
+ "123123132");
InBlock.gif
InBlock.gif            
return sssssss + "abcdefghijklmn";
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

None.gif
None.gif    
public class MainClass
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        
public static void Main()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            TestClass tc 
= new TestClass();
InBlock.gif
InBlock.gif            ObjClass oc 
= new ObjClass(tc);
InBlock.gif            ObjClass1 oc1 
= new ObjClass1(tc);
InBlock.gif
InBlock.gif            tc._delegateTest 
-= new DelegateTest(oc1.typeJJ);
InBlock.gif            
string s = tc.BeginDelegate();
InBlock.gif
InBlock.gif            Console.ReadKey();
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }


 

 

转载于:https://www.cnblogs.com/treeyh/archive/2007/08/09/849486.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react(90)--时间戳比较

if (new Date(values.activityTimeStamp[1]).getTime() <new Date(values.openTimeStamp[0]).getTime()) {message.error(开放给商户提报的结束时间要大于等于活动开始时间);return false;}

primefaces 带参数的组件

分析了一下primefaces extension showcase的源码&#xff0c;总结一下组件传参的方式。 下面定义了一个组件&#xff0c;名为fourTabsDecoratorCustom.xhtml 1: <html xmlns"http://www.w3.org/1999/xhtml" 2: xmlns:h"http://xmlns.jcp.org/jsf/html&…

枚举windows进程

将当前运行的进程列举出来(C Code): #include<windows.h>#include<tlhelp32.h>//#include <iomanip>#include<iostream>using namespace std; int main(){ int count0; PROCESSENTRY32 pe32; //使用这个数据之前设置大小 pe32.dwSizesiz…

程序员的职业发展

在中国有很多人都认为IT行为是吃青春饭的&#xff0c;如果过了30岁就很难有机会再发展下去&#xff01;其实现实并不是这样子的&#xff0c;现在过30岁的已经慢慢多起来了&#xff0c;也不见得混得不好。下面结合自己的经历&#xff0c;与大家一起探讨一下。 明确入行的目的 很…

C++ 20 协程总结

C 20 协程总结 介绍 C 20提供的是非对称的、一等对象、无栈的协程&#xff08;Coroutines in C20 are asymmetric, first-class, and stackless&#xff09; 所谓协程&#xff0c;即用户级线程&#xff0c;一种用于将异步代码同步化的编程机制&#xff0c;使得程序的执行流可…

VC++6.0开发环境之快捷键

F1&#xff1a; 帮助 CtrlO &#xff1a;Open CtrlP &#xff1a;Print CtrlN &#xff1a;New CtrlShiftF2 &#xff1a;清除所有书签 F2 &#xff1a;上一个书签 ShiftF2 &#xff1a;上一个书签 AltF2 &#xff1a;编辑书签 Ctrl&#xff0b;F2 &#xff1a;添加/删除一个书…

react(92)--批量删除进行置空操作

//批量删除handleDeleteAll () > {this.props.dispatch({type: startpage/updateState,payload: { selectedRowKeys: [] },});const { selectedRowKeys } this.props.startpage;if (selectedRowKeys.length 0) {message.error(当前未选择);return false;}this.deletePoin…

.net程序员的盲点(八):泛型

1.泛型介绍泛型类和泛型方法同时具备可重用性、类型安全和效率&#xff0c;这是非泛型类和非泛型方法无法具备的。泛型通常用在集合和在集合上运行的方法中。.NET Framework 2.0 版类库提供一个新的命名空间System.Collections.Generic&#xff0c;其中包含几个新的基于泛型的集…

C++20 协程实现线程同步示例

C20 协程实现线程同步示例 class Event { public:Event() default;Event(const Event&) delete;Event(Event&&) delete;Event& operator(const Event&) delete;Event& operator(Event&&) delete;class Awaiter;Awaiter operator co_await…

react(93)--成功置空

//删除页面逻辑的封装deletePointsDefinition (list) > {this.props.dispatch({type: activity/deleteActivityPopup,payload: {codeList: list,},callback: (res) > {console.log(res, res);if (res.returnCode 0) {message.success(操作成功);\this.props.dispatch({…

给窗口设置系统级或窗口级的热键

开发环境&#xff1a;VS2005, C#语言 为了给一个程序加一个系统级的热键&#xff0c;在开发时需要使用到下面的代码&#xff0c;就是在程序中注册和卸载热键。 1。首先在Form1类的函数中添加如下代码&#xff1a; [DllImport("user32.dll")] private static…

Sublime Text 插件之常用20个插件

作为一个开发者你不可能没听说过 Sublime Text。不过你没听说过也没关系&#xff0c;下面让你明白。 Sublime Text是一款非常精巧的文本编辑器&#xff0c;适合编写代码、做笔记、写文章。它用户界面十分整洁&#xff0c;功能非同凡响&#xff0c;性能快得出奇。这些非常棒的特…

JUnit 4 与 JUnit 3

JUnit 是 Java? 语言事实上的 标准单元测试库。JUnit 4 是该库三年以来最具里程碑意义的一次发布。它的新特性主要是通过采用 Java 5 中的标记&#xff08;annotation&#xff09;而不是利用子类、反射或命名机制来识别测试&#xff0c;从而简化测试。在本文中&#xff0c;执着…

输出特殊形状的图形

输出如下面这种形状的图形&#xff1a; 4 3 7 2 6 9 1 5 8 10 C Code: #include<iostream> using namespace std; //N: 代表有多少行元素void Display(int N){ int i, j, v; if(N < 0) { cout<<"N must bigger than Zero(0)!"<<endl<&l…

整合quickx到普通cocos2dx

quickx是对cocos2dx的lua扩展&#xff0c;它做了一些C的扩展&#xff0c;同时还在lua做了一些封装&#xff0c; 让用lua开发cocos2dx更快&#xff0c;中文站http://quick.cocoachina.com/。 由于现在的项目对cocos2dx有一些修改&#xff0c;又想用到quickx的便捷&#xff0c;于…

react(94)--时间搜索传值规范

console.log(data, dataTime);let startTimeLong (data?.time && new Date(data?.time[0]).getTime()) || ;let endTimeLong (data?.time && new Date(data?.time[1]).getTime()) || ;this.setState({name: data?.name,startTimeLong,endTimeLong,pageI…

我的项目-财务系统

4 名称&#xff1a;财务管理系统 时间&#xff1a;2000 用时&#xff1a;3个月 vb6sqlserver7 独立完成 描述&#xff1a;包含凭证输入&#xff0c;审核&#xff0c;记帐&#xff0c;帐簿管理&#xff0c;自动转帐&#xff0c;会计报表等财务管理的整个流程。此项目在兖州…

对二维数组进行Zig-Zag扫描(C++)

对二维数组进行Zig-Zag扫描(C)&#xff0c;先自定义了一个类&#xff0c;类中有个函数Run()来实现这个扫描过程&#xff0c;二维数组是动态分配空间以及随机赋值的。 下图是Zig-Zag扫描方式&#xff1a; CZigZag.h: #include<iostream>using namespace std; typedef s…

Storing and Retrieving Images from SQL Server using Microsoft .NET

Storing and Retrieving Images from SQL Server using Microsoft .NET 原文 Storing and Retrieving Images from SQL Server using Microsoft .NET Download source - 19.6 KbIntroduction This article is about storing and retrieving images from database in Microsoft …