[我眼中的C#]委托和Lambda表达式
2017-03-17 11:08
190 查看
委托是 C#用来传递方法的引用的语法,和类相同,委托调用之前也要经过定义和声明的过程
使用委托可以先创建匿名方法,但是C#提供了更为简单的方法—Lambda表达式
private delegate string GetString(); static void Main(string[] args) { ////委托是一个类型,这个类型可以赋值一个方法的引用 ////ToString()是object类型的方法 //int x = 40; ////GetString a=new GetString(x.ToString);//没有括号,说明没有调用这个方法,只是传递一个引用 //GetString a = x.ToString; ////string s = a(); //string s = a.Invoke(); //Console.WriteLine(s);//通过委托类型调用一个方法,跟直接调用一个方法是一样的 //使用委托类型作为方法的参数 PrintString method = Method1; PrintStr(method); method = Method2; PrintStr(method); Console.ReadKey(); } private delegate void PrintString(); static void PrintStr(PrintString print) { print(); } static void Method1() { Console.WriteLine("Method1"); } static void Method2() { Console.WriteLine("Method2"); }
使用委托可以先创建匿名方法,但是C#提供了更为简单的方法—Lambda表达式
//Lambda表达式用来代替一个匿名方法,所以一个lambda也是定义了一个方法 Func<int, int, int> plusFunc = (arg1, arg2) =>//lambda表达式的参数是不要声明类型的 { return arg1 + arg2; }; Console.WriteLine(plusFunc(9,6)); Func<int, int> testFunc = a => a+1;//lambda表达式的参数只有一个的时候可以不加上括号,当函数体的语句只有依据的时候,可以不加上大括号,也可以不加上return语句 Func<int, int> test2Func = (a) => { return a + 1; }; Console.ReadKey();
相关文章推荐
- (装载)C#中的委托,匿名方法和Lambda表达式
- 再谈C#中的委托,匿名方法和Lambda表达式
- C#基础加强篇—委托、Lambda表达式和事件(下)
- C#中的委托和Lambda表达式
- (转)C#中的委托,匿名方法和Lambda表达式
- C#中的委托、事件以及lambda表达式
- 一个例子帮你搞懂C#语言高级特性系列(02) --- 委托、事件和Lambda表达式
- 【转】C#中的委托,匿名方法和Lambda表达式
- c#之委托、匿名方法、Lambda表达式
- (C#)中断程序流程,处理事件(委托,事件,Lambda表达式)-1/3
- C#委托基础8——lambda表达式
- C#中的委托,匿名方法和Lambda表达式
- C# 委托和Lambda表达式
- C#中的委托,匿名方法和Lambda表达式(转载)
- C#笔记——lambda表达式(委托->匿名方法->lambda表达式)
- (转)C#中的委托,匿名方法和Lambda表达式
- 一起谈.NET技术,C#中的委托,匿名方法和Lambda表达式
- C#中的委托,匿名方法和Lambda表达式
- C# 委托、Lambda表达式和事件——学习总结
- (C#)中断程序流程,处理事件(委托,事件,Lambda表达式)-2/3