怎么在c#中使用可空类型

  介绍

今天就跟大家聊聊有关怎么在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> 价值> GetValueOrDefault()> 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 ();   ,,,}   ,,}   }

怎么在c#中使用可空类型

而对于? ?的合并运算符,它主要用于定义可空类型和引用类型的默认值。在其运算过程中,为类型转换定义了一个预设值,防止可空类型的值是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#中使用可空类型