C# 可空类型(Nullable)

C# 可空类型(Nullable)

C# 单文号? 与 双问号??

?:单问号用于对int,double,bool等无法直接赋值为null的数据类型进行null的赋值,意思是这个数据类型是Nullable类型的。

int? i=3;
等同于
Nullable<int> i = new Nullable<int>(3);

int i; //默认值0
int?i; //默认值null

?? :双问号 可用于判断一个变量在位null时返回一个指定的值。

接下来详细说明。


 

C# 可空类型(Nullable)

C# 提供了一个特殊的数据类型,nullable类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个null值。

例如,Nullable<int32>,读作“可空的int32”,可以被赋值为-2,147,483,648到2,147,483,647之间的任意值,也可以被赋值为null值。

类似于,Nullable<bool>变量可以被赋值为true或false或者null。

声明一个nullable类型(可控类型)的语法如下:

<data_type>?<variable_name> = null;

下面实例演示了可空数据类型的用法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace nullable
{
    class Program
    {
        static void Main(string[] args)
        {
            int? num1 = null;
            int? num2 = 45;
            double? num3 = new double?();
            double? num4 = 2.1415926;
            bool? boolval = new bool?();

            Console.WriteLine($"显示可空类型{num1},{num2},{num3},{num4}");
            Console.WriteLine($"一个可空的布尔值:{boolval}");
            Console.ReadLine();
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

 

 

 

Null 合并运算符(??)

Null合并运算符用于定义可空类型和引用类型默认值。Null合并运算符为类型转换定义了一个预设值,以防可空类型的值为Null。

Null合并运算符把操作数类型隐式转换为另一个可空(或不可空)的值类型的操作数的类型。

如果一个操作数的值问null,则运算符翻译第二个操作数的值,否则返回第一个操作数的值。下面的实例显示了这一点:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace nullable
{
    class Program
    {
        static void Main(string[] args)
        {
            double? num1 = null;
            double? num2 = 3.1415926;
            double num3;
            num3 = num1 ?? 5.55;
            Console.WriteLine($"num3的值:{num3}");
            num3 = num2 ?? 5.34;
            Console.WriteLine($"num3的值:{num3}");
            Console.ReadLine();
        }
    }
}

当上面的代码被编译和执行时,他会产生下列结果:

 

posted @ 2019-10-24 19:38  刘靖凯  阅读(2633)  评论(0编辑  收藏  举报