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();
        }
    }
}

當上面的代碼被編譯和執行時,他會產生下列結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM