1、扩展
扩展是一个很有用的功能。如果你有一个类、不能修改,同时你又想给他加一个方法。这个过程就是扩展。扩展就是扩展方法。
例1:
类People
public class People { public string Name { get; set; } public int age { get; set; } }
增加一个扩展:
1、扩展必须是一个静态的类
2、扩展方法必须是一个静态的方法
3、被扩展的对象必须是前面加 this People people
public static class extend { public static string ToJson(this People people) { return JsonConvert.SerializeObject(people); } }
使用扩展:
///创建对象 People people = new People() { Name = "Eleven", age = 30 }; ///使用扩增的 ToJson people.ToJson(); ///使用扩增的 ToJson extend.ToJson(people);
2、委托
委托的本质就是一个函数指针。委托是事件的基础
定义一个委托:
1、委托的定义就是、在方法前面加一个 delegate
2、并且这个方法不用且不能去实现
3、并且委托是一个类型
/// <summary> /// 定义了一个委托 /// </summary> /// <param name="a">参数A</param> /// <param name="b">参数B</param> /// <returns></returns> delegate int Plus(int a, int b);
使用:(多次订阅、可以并行执行)
///实现委托 Plus plus = new Plus(PlusMethods); ///并行实现 plus += PlusMethods2; ///并行实现 plus += PlusMethods3; ///执行委托,PlusMethods,PlusMethods2,PlusMethods3 并行执行 plus.Invoke(1, 2);
实际方法:
static int PlusMethods(int a, int b) { Console.WriteLine("PlusMethods:{0},{1}", a, b); return a + b; }
static int PlusMethods2(int a, int b) { Console.WriteLine("PlusMethods2:{0},{1}", a, b); return a + b; }
static int PlusMethods3(int a, int b) { Console.WriteLine("PlusMethods3:{0},{1}", a, b); return a + b; }
3、Lambda
Lambda实际上就是一个匿名方法进化的语法。
例中,我们看一下,一步一步如何进化。
///匿名方法 Plus plus2 = new Plus(delegate (int a, int b) { Console.WriteLine("匿名方法{0},{1}", a, b); return a + b; }); plus2.Invoke(1, 2);
///Lambda方法,就是把 delegate 去掉,在中间加了一个 => 符号 Plus plus3 = new Plus((int a, int b) => { Console.WriteLine("匿名方法{0},{1}", a, b); return a + b; }); plus3.Invoke(1, 2);
///Lambda方法,把 new Plus() 也去掉了 Plus plus4 = (int a, int b) => { Console.WriteLine("匿名方法{0},{1}", a, b); return a + b; }; plus4.Invoke(1, 2);
Lambda 3个组成结构,参数:() 中间符=> 实体{}
4、linq
linq 就是微软把SQL语法搬到了C#代码中
对于集合的查询还是很有帮助的。
详细LINQ参考:
https://msdn.microsoft.com/zh-cn/library/bb397676.aspx
时间: 2024-12-20 11:59:29