delegate

C# 委托中匿名方法的使用

一世执手 提交于 2020-01-11 05:14:08
C# 委托中匿名方法的使用 转载 weixin_33713707 发布于2019-05-05 16:21:00 阅读数 35 收藏 展开 匿名方法是用来创建委托实例的,下面来看一下具体的事例 1 namespace DeletateAndEvent 2 { 3 //创建委托 4 delegate int AddDelegate(int a,float b); 5 delegate double AddDelegateD(float a,double b); 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 AddDelegate ad = delegate(int i, float f)//匿名方法 11 { return i + (int)f; }; 12 int a = ad(20,12.5f); 13 Console.WriteLine(a); 14 15 AddDelegateD add = delegate(float f,double d) 16 { return f * d; }; 17 double dd = add(10,20); 18 Console.WriteLine(dd); 19 20 ///下面这个方法就有点不理解了 21 ad = delegate 22 { return 12 +

C#的委托Delegate

和自甴很熟 提交于 2020-01-11 04:11:17
一、委托基础    1.什么是委托   委托(Delegate) 是存有对某个方法的引用的一种 引用类型 变量,用关键字delegate申明,实现相同返回值和参数的函数的动态调用,提供了对方法的抽象。   委托(Delegate)特别用于 实现事件 和 回调方法 。所有的委托(Delegate)都派生自 System.Delegate 类。    2.声明委托    委托声明后决定了该委托可以引用的方法。 public delegate string MyDelegate(int i);   上面声明的委托可以用于引用任何返回值为string类型并且参数为一个int类型的任意方法名的方法,例如下面这个: public static string GetStr(int i){return i.ToString();}   所以委托的声明格式为:访问修饰符+delegate+返回类型+类型名+参数。   3.初始化委托变量以及赋值   声明了委托类型后,和string、int等类型一样需要声明变量才能使用。对于初始化变量的赋值有两种方式:   (1)new实例化赋值   和一般的类实例化一样,在构造函数中传入方法名即可。 MyDelegate mydelegate = new MyDelegate(GetStr);   (2)直接赋值   由于方法名称和相应的委托之间存在隐身转换

Jquery中的bind(),live(),delegate(),on()绑定事件方法的用法

社会主义新天地 提交于 2020-01-11 00:07:44
项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单的归纳一下bind,live,delegate,on的区别,以便以后查阅,文中如有不当之处,望各位指正。 bind() 简要描述    bind() 向匹配元素添加一个或多个事件处理器。 使用方式    $(selector).bind(event,data,function)   event : 必需项;添加到元素的一个或多个事件,例如 click,dblclick等;           单事件处理:例如 $(selector).bind("click",data,function);           多事件处理:1.利用空格分隔多事件,例如 $(selector).bind("click dbclick mouseout",data,function);                 2.利用大括号灵活定义多事件,例如 $(selector).bind({event1:function, event2:function, ...})                   3.空格相隔方式:绑定较为死板,不能给事件单独绑定函数,适合处理多个事件调用同一函数情况;                  大括号替代方式:绑定较为灵活,可以给事件单独绑定函数;      data :

bind() live()和delegate 区别

半城伤御伤魂 提交于 2020-01-10 18:17:44
Event bubbling (aka event propagation)冒泡 我们的页面可以理解为一棵DOM树,当我们在叶子结点上做什么事情的时候(如click一个a元素),如果我们不人为的设置stopPropagation(Moder Browser), cancelBubble(IE),那么它的所有父元素,祖宗元素都会受之影响,它们上面绑定的事件也会产生作用。看一个示例: $('a').bind('click', function() { alert("That tickles!") }); 当我们在a 上面点击的时候,首先会触发它本身所绑定的click事件,然后会一路往上,触发它的父元素,祖先元素上所有绑定的click事件,就像下图演示的那样。 示例HTML 为了对下面的代码进行演示,添加一些HTML代码: <ul id="members" data-role="listview" data-filter="true"> <!-- ... more list items ... --> <li> <a href="detail.html?id=10"> <h3>John Resig(jQuery的作者)</h3> <p><strong>jQuery Core Lead</strong></p> <p>Boston, United States</p> </a> </li>

C# 委托(Delegate)

耗尽温柔 提交于 2020-01-07 19:01:45
什么是委托? 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。 委托是一种动态调用方法的类型,属于引用型。 委托是对方法的抽象和封装。委托对象实质上代表了方法的引用(即内存地址) 可以理解为函数的一个包装,它使得c#中的函数可以作为参数来被传递 简单理解是这样的 比如您要管您的孩子,把孩子送进了幼儿园 OK,此时您就把您的孩子委托给了幼儿园 当幼儿园放学,将孩子交还给您的手中则是委托的回调 当然我这里的例子是说异步委托调用,您也可以同步 什么是同步委托调用? 您去银行存钱,把钱给柜员,他们帮你点钞,存款然后给您存折或卡 那么您就相当于把钱委托给了柜员让他去执行存钱的这个函数 委托的定义 1. 以delegate关键字开头。 2. 返回类型+委托类型名+参数列表 public delegate void MyDelegate(int para1, string para2); 委托能包装的方法是有一定限制的,例如能被前面的委托类型MyDelegate包装的方法需要满足以下条件:     1.方法的返回类型必须为void;     2.方法必须有两个参数,并且第一个参数应为int类型,第二个参数为string类型。 总结

iOS 中KVC、KVO、NSNotification、delegate 总结及区别

有些话、适合烂在心里 提交于 2020-01-07 13:13:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> iOS 中KVC、KVO、NSNotification、delegate 总结及区别 1、KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性。而不是通过调用Setter、Getter方法访问。KVO 就是基于 KVC 实现的关键技术之一。 Demo: @interface myPerson : NSObject { NSString*_name; int _age; int _height; int _weight; } @end @interface testViewController :UIViewController @property (nonatomic, retain) myPerson*testPerson; @end - (void)testKVC { testPerson = [[myPerson alloc] init]; NSLog(@"testPerson‘s init height =%@", [testPerson valueForKey:@"height"]); [testPerson setValue:[NSNumber numberWithInt:168]forKey:@"height"]; NSLog(@

C#语法——委托,架构的血液

不问归期 提交于 2020-01-06 18:18:30
本篇文章主要介绍委托的应用。 委托是大家最常见的语法了,但会用与精通之间的差别是巨大的。 一个程序员如果不能精通委托,那么,他永远无法成为高级程序员。 所以,让我们把委托刻到血液里吧。 这样,你才能称为[Developer]。 委托的定义 什么是委托? 委托实际上是一种类型,是一种引用类型。 微软用delegate关键字来声明委托,delegate与int,string,double等关键字一样。都是声明用的。 下面先看下声明代码,这里声明了两个委托。 1 2 public delegate void TestDelegate(string message); public delegate int TestDelegate(MyType m, long num); delegate既然是关键字,和int,string一样,那么,为什么delegate后又跟了一个void或者int呢? 如果他们是同等地位的关键字,为什么可以一起使用呢? 很简单,我们把delegate后面的 【void TestDelegate(string message)】理解为一个变量,是不是就清晰明了了一些。 我们把delegate关键字理解为,是用来专门来定义这种复杂的变量的。而这种复杂的变量可以包含一个返回值和任意数目任意类型的传入参数。 有没有感觉,这个复杂的变量特别像一个函数的定义。 没错,官方定义

C#委托和事件定义和使用

旧巷老猫 提交于 2020-01-05 05:15:38
委托 定义委托的语法和定义方法比较相似,只是比方法多了一个关键字delegate ,我们都知道方法就是将类型参数化,所谓的类型参数化就是说该方法接受一个参数,而该参数是某种类型的参数,比如int、string等等;而委托是将方 法参数化,说了上面的那个类型参数化之后,相信你也能猜到方法参数化的意思了,对,就是将方法作为一个参数传到一个委托中。 首先来看看声明委托的语句: public deletate void MyDelegate(); public:访问修饰符 delegate:关键字 void:返回类型 MyDelegate:委托名称 ( ):参数列表 看到声明大家会想了,为什么该委托的返回值,参数列表要这样的,我不能返回一个 string,一个int么?我不能给委托加几个参数么? 答案是:当然可以,但委托的定义是相对于方法来说的,因为得你的委托最终是要来注册方法的,而你的方法是具有某种签名的,所以你要给怎样签名的方法来声明 一个委托,该委托就要和该方法具有同等的签名,就类似于你用一个int 类型的变量去接受一个string类型的值,显然是不行的(个人理解).... * 委托只要定义就可以了,我们并不需要关心他的实现 委托的使用 注册委托有两种方法: 第一种:直接将方法赋值[=]或者用“+=” 给一个委托==>委托名 =[+=] 方法名 第二种:委托本质也是一个类

C# 委托Delegate

跟風遠走 提交于 2020-01-05 05:13:07
委托 C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。 委托( Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。 声明委托( Delegate) 委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同标签的方法。 1 delegate 函数返回类型 委托名 (<方法参数列表>); 实例化委托( Delegate) 委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。当创建委托时,传递到 new 语句的参数就像方法调用一样书写,但是不带有参数。 1 委托类型 实例名 = new 委托类型 (<注册方法>); 通过委托实例来调用方法,执行委托实例就等同于执行注册方法。 匿名函数初始化委托 为初始化委托而专门定义方法较为麻烦,通常调用委托实例初始化时赋值的方法,而不直接调用方法本身。 格式如下: 1 delegate 委托(函数)返回类型 委托类型(函数参数列表); 2 3 委托类型 委托实例= new 委托类型(delegate(<函数参数列表:类型 形参名,类型 形参名...>) 4 { 5 //函数体 6 }); 或者省去new关键字。 1 delegate 委托(函数

深入理解C# 委托(delegate)-戈多编程

霸气de小男生 提交于 2020-01-05 05:12:28
今天来谈谈委托,深入理解委托,本文来自各大神经验总结。 1.委托是什么? 委托类型的声明与方法签名相似。 它有一个返回值和任意数目任意类型的参数,是一种可用于封装命名方法或匿名方法的引用类型。 委托类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。 (1)从数据结构来讲,委托和类一样是一种用户自定义类型 (2)从设计模式来讲,委托(类)提供了方法(对象)的抽象 既然委托是一种类型,那么它存储的是什么数据? 我们知道,委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。 2.委托类型的定义 委托是类型,就好像类是类型一样。与类一样,委托类型必须在被用来创建变量以及类型对象之前声明。 delegate void MyDel(int x); 委托类型声明: (1) 以deleagate关键字开头。 (2)返回类型+委托类型名+参数列表。 3.申明委托变量 MyDel del1,del2; 4.初始化委托变量 (1)使用new运算符 new运算符的操作数的组成如下: 委托类型名 一组圆括号,其中包含作为调用列表中的第一个成员的方法的名字。方法可以是实例方法或静态方法。 del1 = new MyDel( myInstObj.MyM1 ); del2 = new MyDel( SClass.OtherM2 ); (2