C# 委托的理解
1、什么是委托
委托可以理解为持有一个或多个方法的对象。如果执行委托的话,委托会
执行它所"持有"的方法。委托可以避免程序中大量使用if-else语句,使
程序拥有更好的扩展性。
2、委托的本质
委托和类一样,是一种用户自定义的类型,但类表示的是数据和方法的集合,
而委托则持有一个或多个方法,以及一系列预定义的操作。
3、如何声明委托
delegate void MyDel(int x)
说明:delegate 作为委托关键字,没有方法主体
4、什么是多播委托?
可以把多个方法赋值给同一个委托,或者将多个方法绑定到同一个委托,
就是多播委托。
5、一个简单的委托demo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SimpleDelegateDemo
{
class Program
{
static void Main(string[] args)
{
Class1 c2 = new Class1();
c2.MethodUseDelegate(); //调用方法
}
}
class Class1
{
public delegate void SimpleDelegate(); //定义一个委托
SimpleDelegate delegateMethod = UseMethod; //将方法传递给定义的另一个方法(委托)
public void MethodUseDelegate()
{
Class1 c1 = new Class1();
c1.delegateMethod(); //将传递赋值的委托当做方法调用
//SimpleDelegate+=c1.UseMethod2 //绑定第二个方法
//SimpleDelegate-=c1.UseMethod2 //移除第二个方法
}
public static void UseMethod()
{
Console.WriteLine("一个简单委托列子");
Console.ReadKey();
}
public static void UseMethod2()
{
Console.WriteLine("一个简单委托列子2");
Console.ReadKey();
}
}
}
我的公众号开通了 欢迎关注
C# 委托的理解的更多相关文章
- C#委托,事件理解入门 (译稿)
原文地址:http://www.codeproject.com/Articles/4773/Events-and-Delegates-Simplified 引用翻译地址:http://www.cnbl ...
- C# 委托如何理解 打个比喻
初学者可能会给winform窗体注册事件,也听过事件是基于委托实现的 那么,委托是什么,事件又是什么,委托和事件是什么关系. 个人喜欢做一些比喻,把这些东西想象成某一个模型,这样方便记忆,理解,随着对 ...
- C#中委托的理解
请注意,这只是个人关于C#中委托的一点点理解,参考了一些博客,如有不周之处,请指出,谢谢! 委托是一种函数指针,委托是方法的抽象,方法是委托的实例.委托是C#语言的一道坎,明白了委托才能算是C#真正入 ...
- 对JS中事件委托的理解
什么是事件委托: 事件委托——给父元素绑定事件,用来监听子元素的冒泡事件,并找到是哪个子元素的事件.(不理解冒泡的可以去百度下) 定义:利用事件冒泡处理动态元素事件绑定的方法,专业术语叫事件委托. 使 ...
- asp.net事件委托易理解实例
比如说一个公司(场景),你是老板,手下有两个员工,小张和小王. 你命令小王,如果小张玩游戏,则小王扣去小张500元钱.这就是现实中的委托.实际上,在写程序中,程序员就是老板,小张和小王就是两个对象.小 ...
- 事件冒泡及事件委托的理解(JQuery Dom操作)
jQuery事件冒泡: click mouseenter 等事件没有绑定 也会触发,只是触发后没有任何结果 子元素触发事件后,会把触发事件传递给父元素,那么父元素也会被触发. 不管有没有绑定事件,都会 ...
- C#基础学习之委托的理解和应用
委托的使用和语法定义 委托的使用是由四步来完成的,依次为:声明委托.创建委托对象.委托关联方法.调用 我们用一个例子来说明这四步如何操作,我们完成一个老板委托员工写报告的实例,看如何实现. 首先我们应 ...
- C#知识体系(二)用案例来理解委托与事件
上一篇博客讲到了LinQ和lambda的常用方法 还有很多我们未知但c#设计团队已经为我们封装好的类和方法.随着我们不断的熟悉C#语言,渐渐的就会接触到其他的知识点,委托.事件.反射.线程.同步,异步 ...
- C#委托理解(个人观点)
前言: 根据百度百科字面意思是:把事情托付给别人或别的机构(办理/处理), 我们就按汉字意思来理解; 再罗嗦一点通俗一点就是:当某人发生什么事情后把处理这个事情的工作托付给别人或别的机构(办理/处理) ...
随机推荐
- 前端魔法堂:解秘FOUC
前言 对于问题多多的IE678,FOUC(flash of unstyled content)--浏览器样式闪烁是一个不可忽视的话题,但对于ever green的浏览器就不用理会了吗?下面尝试较全面 ...
- 永久设置mysql中文乱码问题
1.进入mysql的命令窗口 输入 show variables like '%char%'; 查看当前编码是否为UTF-8 2.在上述命令的结果中我们可以看到Wamp的安装目录,找到这一目录,在里面 ...
- 某次模拟考试day2t3 菊菊的数据结构
[题目描述] 菊菊是一个码农,他很喜欢码一些高(e)级(xin)数据结构. 有一天,菊菊在打网赛时遇到了 wfj.wfj 觉得他很有前途,可以做下一代码农大神. 于是乎,wfj 给菊菊出了一道题,来检 ...
- tomcat 下部署单框架cas时,报出org.apache.jasper.JasperException异常的解决办法
在tomcat中部署好cas server(设置好https,将cas.war拷贝到了webapps下部署完成),启动tomcat后,访问http://localhost:8443/cas/login ...
- string 学习
#include <string> 1.取当中某个字符 与传统一样 c[11]="0123456789"; c[1]=1; ps:好慢 .. 会不会GG... #inc ...
- iOS 制作自动打包脚本 Xcode8.3.2
本文包含以下内容: 前言 1.shell脚本的编写 2.xcodebuild命令 3.完整的可用示例 参考资料 前言 做iOS开发,打包APP是比较频繁的事情,每次都手动去配置一堆东西确实是比较乏味. ...
- 单页应用跳转ui-view,$stateProvider,$urlRouterProvider
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta charset="UTF- ...
- hdu1151 Air Raid 二分匹配
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1151 求最小路径覆盖 二分图最小路径覆盖=点的个数-最大匹配. 代码: #include<ios ...
- SecureCRT通过Javascrip脚本实现Ctrl+C
代码如下: # $language = "JScript" # $interface = "1.0" for( i=1 ; i < 3600 ; i++) ...
- 【转】解决response.AddHeader("Content-Disposition", "attachment; fileName=" + fileName) 中文显示乱码
如果fileName为中文则乱码.解决办法是 方法1: response.setHeader("Content-Disposition", "attachment; fi ...