linq
委托的声明:
public delegate void NoReturnNoPara(int i);
委托的实例化:
实例化委托的时候,方法的参数返回值必须与声明的委托一致;
//无参无返回值的方法
public void DoNothing(int i)
{
Console.Write("haha");
}
方法一
NoReturnNoPara noReturnNoPara = new NoReturnNoPara(DoNothing);
方法二
NoReturnNoPara noReturnNoPara = new NoReturnNoPara(
delegate(int i)
{
Console.Write("haha");
}
);
方法三
NoReturnNoPara noReturnNoPara = new NoReturnNoPara((int i)=>{
Console.Write("haha");
});
方法四
NoReturnNoPara noReturnNoPara = (i)=>{
Console.Write("haha");
};
===>
NoReturnNoPara noReturnNoPara = i=>Console.Write("haha");
委托的调用:
noReturnNoPara.Invoke(10);//这里是同步调用还可以BeginInvoke()进行异步调用
.NET自带两个委托Action与Func
匿名类
var model = new {i=1;j="111"}
//匿名类在编译的时候会自动生成一个名字,用var的话,编译器可以自动推断类型,如果使用object的话,不能直接使用这个匿名类
//如: var i = 1;//编译器可以自动识别i为int
//用var声明的话,右边的值必须为一个固定的值,因为需要推断
扩展方法
//声明
public static void ExtendString(this string str) {
Console.Write(str);
}
//调用
string s = "1111";
s.ExtendString();
linq
class Program { static void Main(string[] args) { try { List<Student> list = new List<Student>(); AddStudent(ref list);
方法一 var resultList = list.Where<Student>(s => s.age < 10);
方法二
var resultList = from s in list
where s.age <10
select s.age;
foreach (var item in resultList) { Console.WriteLine(item.age); } }
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadKey();
}
public static void AddStudent(ref List<Student> list)
{
for (int i = 0; i < 30; i++)
{
Student student = new Student()
{ age = i };
list.Add(student);
}
}
}
浙公网安备 33010602011771号