委托:
//delegate 返回值 委托名(参数); //委托不能在方法中定义 ////实例化委托,并赋值 //委托名 实例名 = new 委托名(函数名)、lambda表达式; //使用委托实例,就像使用普通的函数一样
Lambda表达式:
个人认为,和某些语言中的闭包类似,即表达式相当于一种匿名函数(可以赋值给委托delegate),例如lambda 表达式 x => x * x —— "=>"运算符的左边是输入参数,右边是返回值。
delegate int del(int i); private void Form1_Load(object sender, EventArgs e) { del aDelegate = x => x * x; label1.Text = aDelegate(10) + ""; //输出100 }
LINQ to SQL、LINQ to XML、LINQ to DataSet、LINQ to Objects。
基本使用:
1、Query语法:
int[] numbers = { 5, 10, 8, 3, 6, 12 }; //数据源必须是实现了IEnumerable接口的类型 //基本语法结构(这条语句不会马上执行,只有当queryNum这个变量被使用时,才会执行这条语句): IEnumerable<int> queryNum = from num in numbers where num % 2 == 0 orderby num select num; label1.Text = ""; foreach (var i in queryNum) { label1.Text += i + " "; }
2、Method语法:
//升序方法 IEnumerable<int> MethodNum = numbers.Where(num => num % 2 == 0).OrderBy(num => num); label1.Text = ""; foreach (var i in MethodNum) { label1.Text += i + " "; }
LINQ的几种基本操作:
Select方法:
避免了反射的开销。