C#中的null與void


一、null:

1、明義,null是什么意思?

  null是指一個變量沒有指向具體對象的有效引用。

  這句話什么意思呢?意思就是

  1)、能夠使用null修飾的是變量;

  2)、主要指的是引用。

  那么這就引出一個問題,什么是引用?這么滴的話我們就順便來探討一下C#的數據類型,在C#中,主要數據類型可以分成兩類,那就是值類型和引用類型。值類型就是如int、float等的預定義類型,而引用類型是什么呢?簡單來說就是一個變量具有一個指向堆中一個值的引用,也就是地址。值類型是存放在棧當中的,具有名稱和值,而引用類型不一樣,引用類型在棧中存放的是名稱和一個引用(或者說是地址)指向堆中的值。所以可以理解為引用就是一個指向具體對象值的地址

因此,我們可以理解了,null意思就是一個類型的變量,該類型是引用類型,這個變量是存在的,但是這個變量暫時還沒有指向哪一個值。

簡單例子就是說在C#中,我們如果聲明一個變量而沒有給它賦值,那么在編譯的時候是會出錯的,因此我們需要給它賦值,這個時候就可以給這個變量賦值null。

 

2、null的使用范圍:

按照上面的說法,null主要指的就是有沒有引用,因此null主要使用在引用類型、指針類型(指針主要也是引用)、以及一個比較特殊的可空類型。

可空類型從何說起呢?做過項目的話應該知道,在數據表當中是允許一些字段為空的,但是C#又必須為聲明的變量賦值,否則會報錯,如果是引用類型的變量還好辦,不過數據表當中的值類型的字段也是大量存在的,為了解決這個問題,子C#3.0開始就引入了可空類型這一個概念。先直接上圖:

可以發現,第一個是報錯的,而第二條代碼是不報錯的,為什么呢?因為第二條代碼聲明的變量類型是可空的int型,所以可以賦值為null。

3、明確常見的null使用中容易搞混的地方:

  1)、賦值為null與不賦值的區別:

    上面說過的,主要就是編譯會不會通過的區別。

  2)、為string類型的變量賦值為null與賦值為“”的區別:

    為string類型的變量賦值為null表示不知道該值是否存在,而賦值為“”說明,該值是有值的,但是值是“,把“”當做一個值就好理解了。舉個生活中的例子就是:

    我們收集情報的話,收集到張三的手機號那一欄為null,那說明我們沒有收集到張三手機號的相關信息,而如果那一欄的值是“”,那說明張三沒有手機號。這就是區別。

 

二、void:

1、明義:

  void表示沒有任何類型,沒有任何值。

2、用途

  1)、更多的時候感覺void更像是一個指令或者像是一個配置。我們最常見的就是在聲明方法的時候,這個值指示說明該方法不返回任何值。這個是一個用途。

  2)、還有一個用途就很少見了,因為C#雖然事實上也有指針,但是我們幾乎不用。說到這里大概就明白了,void還用在指針當中,原話是出自C#本質論第四版:

     void出現在指針當中,說明指針指向未知類型的存儲位置。(在這里要道歉撒,博主對於C#當中的指針一竅不通,因此無法進行解釋)。

 


免責聲明!

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



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