今天就跟大家聊聊有关怎么在c#中使用可空类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强> 1,可空类型基础知识强>
顾名思义,可空类型指的就是某个对象类型可以为空,同时也是System.Nullable结构的实例。可空类型可以表示基础值类型正常范围的值,然后再加上一次零值。当然,也可以被赋值null值。比如<代码> Nullable
声明一个可空类型的标准语句如下:
T ?, myNullableNum =, rangedNum/new T ?(),或是零;
比如,我们声明一个可空值类型并赋值null;
int ?, intClass =,零;
或者使用
int ?, intClass =, new int ? ()
同时,我们都知道,可空类型是泛型<代码> Nullable
Nullable, myNullableClass =, new Nullable ();
从声明中可以看的出,它的基础类型T是可以包括<代码> struct 代码>和<代码> enum> 代码在内的任何值类型,但是不能是引用类型,也不能是可空类型;从这里我们可以看的出,可能类型不能嵌套使用。
在可空类型中,它包含以下实例成员:
首先是<代码> HasValue> 代码,它是只读属性,用于判断对象是否有值。如果当前值非空,则返回真,否则返回误;其次是<代码>价值> 代码,它也是只读属性,用于获取对象的值。如果当前值非空,则可以正常获取到对应的值,否则会抛出异常InvalidOperationException;接着是<代码> GetValueOrDefault()> 代码的实例方法。该方法通过HasValue属和价值性来得到当前的信息。如果当前值非空,即HasValue是真的,则返回值的值,否则返回T类型的默认值,即私有字段值的默认值。最后一个是<代码> GetValueOrDefault() 代码>实例方法。该方法依然是通过HasValue属和价值性来得到当前的信息。如果当前值非空,即HasValue是真的,则返回值的值,否则返回默认值defaultValue。
如果将可空类型转换为其基础类型,需要使用强制转换或其价值属性获取:
int myInt =, (int) myNullableInt; int myInt =, myNullableInt.Value;//以上两种方式,在可空类型实例为null时会抛出异常,可以使用以下方式代替 int myInt =, myNullableInt.GetValueOrDefault();,//其重载方法可以传入默认值
<强> 2,可空类型的使用强>
在可空类型中,常见的有使用单问号?和双问号? ?来进行设置。其中?常用于int、双、保龄球等无法直接赋值为零的数据类型;所代表的含义是这个数据类型是可空类型。
int ?, k=10; 等同于 Nullable(10); int m,//默认值为0 int ?,,,//默认值为null
而? ?主要用于在判断对象的值为null时所返回的指定的值。
int ?, num =,空; var k ==, num ? ?, 9;
对于可空类型,属于一种特殊的数据类型,它可表示所对应的基础值类型中正常范围内的值,再加上一个null值。
比如说一个int类型的对象,它可以被赋值为-2147483648到2147483647之间的任意值,也可以被赋值为空值。而对于一个bool类型的值来说,它可以是真的,假的也可以是null。
声明一个nullable类型(可控类型)的语法如下:
& lt; data_type> ? & lt; variable_name>,=,零;
以下示例说明:
using 系统; namespace ExampleTest { class 才能;程序 {才能 ,,,static void Main (string [], args) ,,,{ ,,,,,int ?, objectNull =,空; ,,,,,int ?, k =, 80; ,,,,,双人床?,db1 =, new 双? (); ,,,,,双人床?,db2 =, 4.56; ,,,,,bool ?, b =, new bool ? (); ,,,,,Console.WriteLine(美元“显示可空类型{objectNull}, {k}, {db1}, {db2}“); ,,,,,Console.WriteLine(美元),一个可空的布尔值:{b}“); ,,,,,Console.ReadLine (); ,,,} ,,} }
而对于? ?的合并运算符,它主要用于定义可空类型和引用类型的默认值。在其运算过程中,为类型转换定义了一个预设值,防止可空类型的值是null。
using 系统; namespace ExampleTest { class 才能;程序 {才能 ,,,static void Main (string [], args) ,,,{ ,,,,,双人床?,objNull =,空; ,,,,,双人床?,k =, 4.85; ,,,,,double 数据库; ,,,,,db =, objNull ? ?, 9.82; ,,,,,Console.WriteLine(美元“num3的值:{db}“); ,,,,,db =, k ? ?, 6.02; ,,,,,Console.WriteLine(美元“num3的值:{db}“); ,,,,,Console.ReadLine (); ,,,} ,,} }怎么在c#中使用可空类型