Lamdba:匿名方法、匿名函数:避免每次使用方法的时候都去定义一个方法 语法:(参数列表)=>{方法体};
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CSharp { /// <summary> /// Lamdba:匿名方法、匿名函数:避免每次使用方法的时候都去定义一个方法 语法:(参数列表)=>{方法体}; /// </summary> class Lamdba { //lamdba 语法:(参数列表)=>{方法体} //几种写法:无参无返回值()=>{ }; 一个参数一个返回值的lamdba写法(a)=>{return a*a}; 二个参数一个返回值的lamdba写法:(a,b)=>{return a+b;} //另外经常使用查询集合用到,如:List<int> l = 集合名.where(a=>a==条件).ToList(); //a是泛型,数据是int那么a就是int //多条件:集合名.where(a=>(a.字段1==条件||a.字段1==条件)&&(a.字段2==条件||a.字段2==条件)); static void Main(string[] arge) { //配合系统委托来学习Lamdba的使用 Func<double, double> func = (a) => { return a * a; }; Console.WriteLine("一个参数一个返回值的lamdba方法:" + func(3)); //********************************************************************************************************************** //系统Lamdba 扩展方法:查询集合返回一个集合。语法:集合名.where(a =>a==条件); a集合里边装的内容:如果集合里边装的字符串a表示字符串,如果集合里边装的Int则a表示Int List<string> ilist = new List<string>() { "陈一", "小二", "张三", "李四", "王五", "赵六", "西瓜", "香瓜", "木瓜", "香菜", "香逗" }; Console.Write("请输入你需要查询的内容:"); string str = Console.ReadLine();//接收用户输入的值 //lamdba查询内存集合的写法 List<string> rsult = ilist.Where(a => a.Contains(str)).ToList();//模糊查询,查询集合返回一个集合 Console.WriteLine("一般的foreach遍历"); foreach (string itme in rsult) { Console.WriteLine(itme); } Console.WriteLine("foreach内部实现原理"); rsult.ForEach(item => { Console.WriteLine(item); }); //做一个精准匹配返回单个值 First()或者是FirstorDefault(); //string strs = ilist.Where(a => a == str).First();//找不到就报错 //Console.WriteLine("First精准匹配的返回值:" + strs); string strss = ilist.Where(a => a == str).FirstOrDefault(); //找不到就赋空值 Console.WriteLine("FirstOrDefault的返回值:" + strss); //Where(a => a.Contains(str))模糊查询,上面是精准查询 //************************************************************************************************************************ //系统自带的委托 //Action 满足0 到16个参数 没有返回值的泛型委托 Action act1 = () => { };//没有参数 就一个空的小括号 Action<int> act2 = i => { };//一个参数,可以去掉小括号 Action<int, string> act3 = (id, name) => Console.WriteLine("这里是DoNothingWithPara"); Action<int, int, string, DateTime, int, int, string, DateTime, int, int, string, DateTime, int, int, string, DateTime> act17 = null; //Action 满足0 到16个参数 带返回值的泛型委托 Func<int> func1 = () => 1;//如果方法体只有一行,还要去掉return Func<int, string> func2 = i => i.ToString(); Func<int, int, int, string, DateTime, int, int, string, DateTime, int, int, string, DateTime, int, int, string, DateTime> fun17 = null; Console.ReadLine(); } } }