C#中可空類型的使用
一、什么是可空類型
可空類型允許我們創(chuàng)建一個值類型變量并且可以標記為有效或無效,這樣我們就可以有效地將值類型設(shè)置為null。可空類型總是基于另外一個叫做基礎(chǔ)類型的已經(jīng)被聲明的類型。
可以從任何值類型創(chuàng)建可空類型。不能從引用類型或其他可空類型創(chuàng)建可空類型。不能在代碼中顯示聲明可空類型,只能聲明可空類型的變量。編譯器會使用泛型隱式地創(chuàng)建可空類型。
舉例:聲明一個可空int類型的變量
產(chǎn)生的可空類型如下:
必須確保使用可空類型時,該可空變量不是null
可空類型和相應的非可空類型可以輕松轉(zhuǎn)換:
二、為可空類型賦值
可以將以下三種類型的值賦給可空變量:
基礎(chǔ)類型的值同一可空類型的值null
三、使用空接合運算符
- 空接合運算符允許我們在可空類型變量為null時返回一個值給表達式。(可空類型也可以使用標準運算符和比較運算符)
- 空接合運算符由兩個連續(xù)的問號組成。
- 第一個操作數(shù)是可空類型的變量。
- 第二個操作數(shù)是基礎(chǔ)類型的不可空值。
- 在運行時,如果第一個操作數(shù)運算后為null,將返回第二個操作數(shù)作為結(jié)果。
static void Main(string[] args) { int? myInt = null; Console.WriteLine("myInt:{0}", myInt ?? -1); myInt = 6; Console.WriteLine("myInt:{0}", myInt ?? -1); }
四、使用可空用戶自定義類型
1. 創(chuàng)建用戶自定義值類型
struct MyStruct //聲明結(jié)構(gòu) { public int X; public int Y; public MyStruct(int x, int y) { X = x; Y = y; } }
2.將值類型轉(zhuǎn)換為可空類型
static void Main(string[] args) { MyStruct? ms = new MyStruct(6,7);//方式1,使用? MyStruct myStruct = new MyStruct(6,7); Nullable<MyStruct> ms3 = new Nullable<MyStruct>(myStruct);//使用Nullable創(chuàng)建的可空類型 }
3.使用自定義值類型轉(zhuǎn)換后的可空類型,可空類型其數(shù)據(jù)只能通過Value來訪問。
struct MyStruct //聲明結(jié)構(gòu) { public int X; public int Y; public MyStruct(int x, int y) { X = x; Y = y; } } internal class Program { static void Main(string[] args) { MyStruct ms1 = new MyStruct(6,7);//值類型 MyStruct? ms2 = new MyStruct(6,7);//使用?創(chuàng)建的可空類型 MyStruct myStruct = new MyStruct(6,7); Nullable<MyStruct> ms3 = new Nullable<MyStruct>(myStruct);//使用Nullable創(chuàng)建的可空類型 Console.WriteLine("X={0},Y={1}", ms1.X, ms1.Y); Console.WriteLine("X={0},Y={1}", ms2.Value.X, ms2.Value.Y); Console.WriteLine("X={0},Y={1}", ms3.Value.X, ms3.Value.Y); } }、
到此這篇關(guān)于C#中可空類型的使用的文章就介紹到這了,更多相關(guān)C# 可空類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實現(xiàn)主窗體最小化后出現(xiàn)懸浮框及雙擊懸浮框恢復原窗體的方法
這篇文章主要介紹了C#實現(xiàn)主窗體最小化后出現(xiàn)懸浮框及雙擊懸浮框恢復原窗體的方法,涉及C#窗體及鼠標事件響應的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08C# Winform按鈕中圖片實現(xiàn)左圖右字的效果實例
這篇文章主要給大家介紹了關(guān)于C# Winform按鈕中圖片實現(xiàn)左圖右字效果的相關(guān)資料,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11Visual Studio中根據(jù)系統(tǒng)區(qū)分引用64位、32位DLL動態(tài)庫文件的配置方法
這篇文章主要介紹了Visual Studio中根據(jù)系統(tǒng)區(qū)分引用64位、32位DLL動態(tài)庫文件的配置方法,本文在VS2008中測試通過,其它VS版本可以參考下2014-09-09C#設(shè)計模式之ChainOfResponsibility職責鏈模式解決真假美猴王問題實例
這篇文章主要介紹了C#設(shè)計模式之ChainOfResponsibility職責鏈模式解決真假美猴王問題,簡單說明了責任鏈模式的概念,并結(jié)合《西游記》中真假美猴王故事背景為實例分析了責任鏈模式的具體使用技巧,需要的朋友可以參考下2017-09-09C#?在PDF中添加墨跡注釋Ink?Annotation的步驟詳解
PDF中的墨跡注釋表現(xiàn)為徒手涂鴉式的形狀,該類型的注釋,可任意指定形狀頂點的位置及個數(shù),通過指定的頂點,程序?qū)⑦B接各點繪制成平滑的曲線,下面通過C#程序代碼介紹下在pdf中添加注釋的步驟,感興趣的朋友一起看看吧2022-02-02C#中String和StringBuilder的簡介與區(qū)別
今天小編就為大家分享一篇關(guān)于C#中String和StringBuilder的簡介與區(qū)別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10