网站首页做一点开有动画,广东新闻联播,家具网站模板下载,制作头像生成器1. 可空类型修饰符#xff08;T?#xff09;
强类型语言中引用类型可以为空#xff0c;如#xff1a;
string strnull;而你若是定义一个值类型为空#xff0c;则是会报错的。
然而#xff0c;在处理数据库和其他包含可能未赋值的元素的数据类型时#xff0c;我们希望…1. 可空类型修饰符T?
强类型语言中引用类型可以为空如
string strnull;而你若是定义一个值类型为空则是会报错的。
然而在处理数据库和其他包含可能未赋值的元素的数据类型时我们希望可以将 null 赋值给数值类型或布尔型的功能特别有用。例如数据库中的布尔型字段可以存储值 true 或 false或者该字段也可以未定义
所以C# 提供了一个特殊的数据类型Nullable 类型可空类型可空类型可以表示其基础值类型正常范围内的值和 null 值。
例如Nullable Int32 读作可空的 Int32可以被赋值为 -2^31 到2^31-1 之间的任意值也可以被赋值为 null 值。
类似的Nullable bool 变量可以被赋值为 true 或 false 或 null。
实际上Nullable类型是一个结构体它有两个公开可读字段HasValue和Value。 HasValue是一个布尔值当有值存储时它为真当变量值为null时HasValue为假。当HavValue为真是时可以取得变量的值为假时当尝试取得变量的值时会抛出一个异常(System.InvalidOperationException)。
声明一个 nullable 类型可空类型的语法如下:
用可空类型修饰符来表示
表现形式为T?
例如int? 表示可空的整形DateTime? 表示可为空的时间。
T? 其实是System.Nullable(泛型结构的缩写形式也就意味着当你用到T时编译器编译 时会把T编译成System.Nullable的形式。
例如int?,编译后便是System.Nullable的形式。 2. 三元运算符表达式?:
例如x?y:z 表示如果表达式x为true则返回y如果x为false则返回z是省略if{}else{}的简单形式。 3. 空合并运算符(??)
为了减少可空类型的代码量遇到null的时候C#提供了??操作符来获取如果为空的默认值
如果此运算符的左操作数不为null则此运算符将返回左操作数否则返回右操作数。
例如a??b 当a为null时则返回ba不为null时则返回a本身。
空合并运算符为右结合运算符即操作时从右向左进行组合的。如“a??b??c”的形式按“a??(b??c)”计算。 4. NULL检查运算符?.
?.用于判断某个对象是否为空如果对象为NULL则不进行后面的获取成员的运算直接返回NULL
例如
class Foo
{
public int N { get; } 1;
}static void Main(string[] args)
{Foo foo null;var n 2 foo?.N ?? 1Console.WriteLine(n);Console.ReadKey();//input :1
}说明
运算和??运算是同级的从左到右foo?N 其中foo为空故foo?.N为空而不是我们自己定义只读属性N的默认值12null,注意结果是int?类型的结果是nullnull??1,结果即1