C#语言新特性与Linq查询知识点

自动属性
下面两种写法作用相同.前者属于自动属性.在使用自动属性时应该注意:get和set访问器不能有具体的实现.
在这里插入图片描述
可空类型(可以为空的值类型)
对于值类型而言,C#规定:在定义变量的同时必须要对其赋初值,否则可能无法通过编译器的编译.但是在某些情况下,用户事先是不知道变量的初始值是多少的.因为可以为空的值类型就显得很重要.

  1. 值类型包括:int\double\float\decimal\bool\char
  2. 可为空的语法为:Nullable,其中T指代上面具体的某种值类型
    比如,可以为空的int类型:Nullable;可以为空的bool类型:Nullable
  3. 可以为空的变量,在赋值时,可以将null赋值给它.
    例如:Nullable age = null;
  4. Nullable可以简写为:T?
    例如: Nullable age = null;等价于int? age = null;
  5. 下面两种写法都是错误的.
    string? name = null; Student? Stu = null;
    因为string和Student都是引用类型.
  6. 可空值类型的常用属性:
    HasValue:布尔类型,如果字段不为null返回true,否则返回false.
    Value:获取字段的值,如果该字段的值为null,那么调用Value属性会报错

泛型类
List:T可以指代任何类型,比如:int\bool\string\Student…
Dictionary<T, K>:字典类,其中T和K可以指代任何类型
KeyValuePair<Tkey, Tvalue>:键值对类型
对象初始化器
利用对象初始化器,在实例化一个类对象的同时可以为它的属性赋值.
在这里插入图片描述
集合初始化器
利用集合初始化器,可以在实例化一个集合对象时为它指定元素
在这里插入图片描述
var关键字
var用于定义变量,变量的类型根据值来确定.
var a = 5; 因为5是int类型,所以a的类型也是int
var stu = new Student();因为通过new创建的是Student类型的变量,所以stu是Student类型.
注意1:var b;这种写法是错误的.原因是由var声明的变量,必须在定义的同时就赋初值.
注意2:通过var声明的变量一旦实例化后,就不能再更改它的数据类型.例如下面的代码:
var a = 5; a = “zhangsan”;//a=”zhangsan”报错
匿名类型
在实例化一个类对象时,可以无须事先定义该类,通过new{}即可动态创建类对象.
在这里插入图片描述
扩展方法
扩展方法是指:为以前定义好的类扩展其他方法.具体步骤如下:
7. 首先,定义一个静态类(类的名称没有限制)
8. 其次,在静态类中定义一个静态方法(方法返回值根据实际情况自定定义)
9. 最后,给上述静态方法添加一个参数,且该参数必须被this关键字修饰.
注意: 上面被this关键字修饰的参数的类型就是该扩展方法所扩展的类型
下面的代码演示了如何为string类扩展名称为Convert的无参方法.
在这里插入图片描述
匿名类型和Lambda表达式

  1. 什么是委托:委托允许将一个方法作为参数,传递给另外一个方法.
    下面的代码演示了如果使用委托计算2个数字的加法\减法\乘法.
    委托和挂载的方法:参数个数\参数类型\参数顺序\返回值类型必须要一致
    在这里插入图片描述
  2. 但是上述方式,使用很复杂.我们可以通过匿名方法来简写上述功能.=符号右侧的就是匿名方法
    在这里插入图片描述
    1. Lambda表达式也是匿名方法的一种.并且它的语法更加简洁明了.
      Lambda表达式分3部分 : 参数 | => | 表达式
      下面的代码演示了如果使用Lambda表达式改写委托的示例.其中3个粉色的线框就是Lambda的3部分.
      在这里插入图片描述
      注意1:如果Lambda表达式只有1个参数,那么参数部分可以不用()包裹
      注意2:Lambda表达式部分可以使用{}包裹,也可以不包裹.如果有多行代码,必须要使用{}包裹起来.
  3. 在出现委托(Func参数)的地方,我们就可以写Lambda表达式.
    Func<T, K>是一个泛型委托.该委托的参数类型为T,返回值类型为K.
    在这里插入图片描述
    Lambda表达式的参数arg的类型为T,Lambda的表达式部分返回值类型为K.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LilyCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值