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);
  }
}
}

 

posted @ 2017-08-28 22:17  MT老绵羊  阅读(144)  评论(0)    收藏  举报