EntityFramework数据持久化 第一章 C#高级特性

一、隐式类型与匿名类型

1、隐式类型(局部推断类型):是编译器可以根据变量的初始值“推断”变量的类型。

1)只能用于声明局部变量。

2)声明必须同时初始化,且不能为null。

3)隐式类型是强类型声明。

2、匿名类型:可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。
注意:相同的匿名类型必须具有相同个数、命名、数据类型及顺序的属性。

二、扩展方法(重点)与yield关键字

1、扩展方法是允许使用实例方法的调用语法来调用静态方法的语言功能。

1)扩展方法能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。

2、扩展方法的定义与调用:

1)定义包含扩展方法的静态类,此类必须对客户端代码可见。

2)将扩展方法实现为静态方法,并且使其可访问性与所在类的可访问性一致。

3)扩展方法的第一个参数是指定方法所操作的类型、此参数前面必须加上this修饰符。

4)在调用代码中,添加using指令,用于指定包含扩展方法类的命名空间。

5)扩展方法的调用与调用类型的实例方法一样。

3、yield关键字向编译器指示该关键字所在的方法是迭代器块。

1)编译器将生成一个类来实现迭代器块中所表示的行为。

2)在迭代器块中,yield关键字与return关键字结合使用,向枚举器对象提供值,该值为返回值。

3)简单地来说,yield关键字就是以一种简单的语法为方法、get访问器等语句块返回一个可以迭代的数据集合。

三、C#委托(重点)

1、委托是一种类型化的函数指针。

1)即可以存储一个方法的地址,从而使用该方法可以作为参数传递给另一个方法。

2)所谓“类型化",是指某一委托只能存储与之签名(返回值、参数列表)相同的方法。

2、适用场景:在定义可复用的模块(比如:类),需要从外部传递方法给模块内的一个方法时。

3、语法:

public delegate <return type> <delegate-name> <parameter list>

4、多播委托:

1)可通过使用“+=”运算符将多个对象分配到一个委托实例上,形成多播委托。

2)多播委托被调用时会依次调用列表中的委托。

3)使用“-=”运算符可用于从多播委托中删除组件委托。

四、Lambda表达式(重点)

1、匿名方法:匿名方法是没有名称只有主体的方法。

1)语法:

delegate (parameters ){implementationcode};

2、Lambda表达式是对匿名方法的语法简化。

1)语法:

形参列表=>方法体

2)规则:

形参不必使用数据类型声明

只有一个形参可以省略小括号

方法体如果仅有一条return语句,可以省略大括号、return、分号。

小剧场:清晨醒来,Wake up in the mornin.

发布了201 篇原创文章 · 获赞 149 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43771695/article/details/105398919