.net基础扫盲-小例子串委托、匿名方法、lambda表达式
2015-01-31 20:58
381 查看
我把委托理解为:委托是一种方法的格式,当然他也是一种类型。
只要是方法的格式跟委托定义的格式是一样的,那么就可以把该方法附加给该委托。看以下demo
声明委托:
声明一个格式相同的方法:
给类声明一个委托类型的成员变量
将方法附加给委托,调用,测试如下:
控制台输出—— 15
如果我们定义的OtherMethod不常用,就没有必要单独声明一个方法。可以用匿名方法,即:在给委托附加方法的时候,直接构造一个跟委托格式相同的匿名方法就可以了:
写法如下:
匿名方法,顾名思义,没有方法名,只有方法参数和方法的算法,可真是够简单了。
同样我们也可以直接用lamuda表达式,直接构造一个方法,如下:
匿名方法和拉姆达表达式的出现,使得写方法变得更加简便了。
只要是方法的格式跟委托定义的格式是一样的,那么就可以把该方法附加给该委托。看以下demo
声明委托:
<p style="margin:0in;font-family:微软雅黑;font-size:12.0pt"></p><pre name="code" class="csharp">public delegate void Add(int a,int b );
声明一个格式相同的方法:
static void OtherMethod(int a ,int b) { Console.WriteLine(a+b); }
给类声明一个委托类型的成员变量
public class Person { public string Name { set; get; } public string Age { set; get; } public Add MyAdd ; }
将方法附加给委托,调用,测试如下:
static voidMain(string[] args) { Person p1 =new Person (); p1.MyAdd = OtherMethod; p1.MyAdd(7, 8); Console.ReadLine(); }
控制台输出—— 15
如果我们定义的OtherMethod不常用,就没有必要单独声明一个方法。可以用匿名方法,即:在给委托附加方法的时候,直接构造一个跟委托格式相同的匿名方法就可以了:
写法如下:
p1.MyAdd = delegate(inta, int b) { Console.WriteLine(a + b); };
匿名方法,顾名思义,没有方法名,只有方法参数和方法的算法,可真是够简单了。
同样我们也可以直接用lamuda表达式,直接构造一个方法,如下:
p1.MyAdd = (int a, int b) => {Console.WriteLine(a + b); };
匿名方法和拉姆达表达式的出现,使得写方法变得更加简便了。
相关文章推荐
- .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)
- 一起谈.NET技术,C#中的委托,匿名方法和Lambda表达式
- 从委托到匿名方法,再到Lambda表达式(1.0-2.0-3.0的根中委托写法)
- 再谈C#中的委托,匿名方法和Lambda表达式
- 委托是什么?匿名方法是什么?在C# 3.0中,Lambda表达式是什么?扩展方法是什么?LINQ是什么?您觉得C# 3.0中还有哪些重要的特性,它们带来了什么优势?BCL中哪些类库和这些特性有关?您平时最常用哪些
- C#的委托,匿名方法和Lambda表达式
- C#中的委托,匿名方法和Lambda表达式
- 从.NET中委托写法的演变谈开去(上):委托与匿名方法
- C#中的委托,匿名方法和Lambda表达式
- 匿名方法,泛型委托,Lambda表达式
- C#委托基础7——匿名方法
- (转)C#中的委托,匿名方法和Lambda表达式
- 从.NET中委托写法的演变谈开去(上):委托与匿名方法(转)
- 黑马程序员_学习日记42_608基础加强(正则表达式、委托、匿名方法)
- .Net学习难点讨论系列10 - 匿名方法,Lambda表达式及其对局部变量的影响
- 委托的匿名方法简单例子(2。0实现)
- 从委托而起(一)委托、匿名方法和Lambda表达式,一脉相承
- 一起谈.NET技术,从.NET中委托写法的演变谈开去(上):委托与匿名方法
- 关于委托、匿名方法、Lambda表达式的演变过程
- C#笔记——lambda表达式(委托->匿名方法->lambda表达式)