詳解如何在C#中處理空值
在任何編程語(yǔ)言中開(kāi)發(fā)應(yīng)用程序時(shí),經(jīng)常會(huì)遇到空異常或空引用異常。空指針或空引用是指不引用有效的內(nèi)存位置或?qū)ο蟮闹羔?。這是一個(gè)困擾程序員已經(jīng)很久的問(wèn)題,自從程序員開(kāi)始編寫(xiě)程序以來(lái)??罩凳且粋€(gè)特殊的值,表示沒(méi)有有效值可用。當(dāng)將空值賦給對(duì)象時(shí),它會(huì)將對(duì)象中的字段或變量的值重置為無(wú)值,即空值。所以必須在應(yīng)用程序的代碼中處理空值,以避免空引用異常和運(yùn)行時(shí)應(yīng)用程序的意外行為。那讓我們探討一下在C#中處理空值的各種方法。要使用下面提供的代碼示例,首先應(yīng)該在系統(tǒng)中安裝Visual Studio 2022。
在Visual Studio中創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序項(xiàng)目
首先,讓我們?cè)赩isual Studio中創(chuàng)建一個(gè).NET Core控制臺(tái)應(yīng)用程序項(xiàng)目。如果系統(tǒng)已安裝Visual Studio 2022,請(qǐng)按照以下步驟在Visual Studio中創(chuàng)建一個(gè)新的.NET Core控制臺(tái)應(yīng)用程序項(xiàng)目:
- 啟動(dòng)Visual Studio IDE。
- 點(diǎn)擊“創(chuàng)建新項(xiàng)目”。
- 在“創(chuàng)建新項(xiàng)目”窗口中,從顯示的模板列表中選擇“控制臺(tái)應(yīng)用程序 (.NET Core)”。
- 點(diǎn)擊“下一步”。
- 在“配置新項(xiàng)目”窗口中,指定新項(xiàng)目的名稱和位置。
- 點(diǎn)擊“下一步”。
- 在接下來(lái)顯示的“附加信息”窗口中,選擇“.NET 7.0 (標(biāo)準(zhǔn)支持期)”作為您要使用的框架版本。
- 點(diǎn)擊“創(chuàng)建”。
我們將使用這個(gè).NET 7控制臺(tái)應(yīng)用程序項(xiàng)目來(lái)處理接下來(lái)文章中的空值。我們將探討在C#中處理空值的五種方法??梢愿鶕?jù)對(duì)應(yīng)的應(yīng)用程序的需求選擇使用哪種方法。
C#中的空條件運(yùn)算符(?.)
當(dāng)對(duì)象不為null時(shí),您可以使用空條件運(yùn)算符(?.)訪問(wèn)其成員(數(shù)據(jù)成員和方法)。如果對(duì)象為null,空條件運(yùn)算符將返回null,但在訪問(wèn)對(duì)象的成員時(shí)不會(huì)引發(fā)運(yùn)行時(shí)異常??紤]以下類的示例:
public class Author { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Address { get; set; } ?}
現(xiàn)在編寫(xiě)以下代碼來(lái)創(chuàng)建一個(gè)Author對(duì)象,為FirstName和LastName屬性賦值,并獲取Address屬性的長(zhǎng)度。請(qǐng)注意,我們沒(méi)有為Address屬性賦值,因此它被設(shè)置為null。
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; int length = author.Address.Length;
當(dāng)執(zhí)行上述代碼片段時(shí),將會(huì)遇到一個(gè)運(yùn)行時(shí)異常,如下圖所示。
圖一:空引用異常
以下代碼示例展示了如何在C#中使用空條件運(yùn)算符來(lái)避免運(yùn)行時(shí)異常。
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null; int? length = author.Address?.Length;
C#中的空合并賦值操作符(??=)
當(dāng)左操作數(shù)的值為null時(shí),空合并賦值運(yùn)算符將右操作數(shù)的值賦給左操作數(shù)。以下是一個(gè)在C#中使用該運(yùn)算符的示例:
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null; author.Address ??= "Default"; Console.WriteLine(author.Address);
C#中的空值忽略運(yùn)算符(!.)
空值忽略或空值抑制運(yùn)算符(!)允許在表達(dá)式中抑制所有警告。只有在確信屬性或?qū)ο蟮闹挡粫?huì)為null,并且希望抑制知道是錯(cuò)誤的警告時(shí),才應(yīng)使用此運(yùn)算符。以下代碼片段演示了如何使用空值忽略運(yùn)算符:
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null!; int length = author.Address.Length; Console.WriteLine(length);
C#中的條件運(yùn)算符 (?:)
可以使用條件運(yùn)算符 (?:) 來(lái)評(píng)估包含其中一個(gè)操作數(shù)為null值的表達(dá)式。條件運(yùn)算符也被稱為三元條件運(yùn)算符,因?yàn)槭褂迷撨\(yùn)算符的語(yǔ)句有三個(gè)部分:條件(布爾表達(dá)式)、結(jié)果表達(dá)式和備選表達(dá)式。如果條件為真,則結(jié)果表達(dá)式(在冒號(hào)左側(cè))將被評(píng)估/返回。如果條件為假,則備選表達(dá)式(在冒號(hào)右側(cè))將被評(píng)估/返回。以下是一個(gè)示例,演示了如何在表達(dá)式中使用條件運(yùn)算符來(lái)處理null值:
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null!; string result = (author.Address != null) ? author.Address : "Unknown"; Console.WriteLine(result);
C#中的is運(yùn)算符(類型判斷運(yùn)算符)
還可以使用關(guān)鍵字is
來(lái)檢查一個(gè)值是否為null。這個(gè)關(guān)鍵字(同時(shí)也是一個(gè)運(yùn)算符)可以用于比較常量值甚至null值。以下代碼片段展示了如何在C#中使用這個(gè)運(yùn)算符來(lái)處理null值。
Author author = new Author(); author.FirstName = "Joydip"; author.LastName = "Kanjilal"; author.Address = null!; if(author.Address != null) { Console.WriteLine(author.Address); } else { Console.WriteLine("The value of the Address property is null"); }
除了上面提到的五種技術(shù)之外,還可以使用C#中的其他運(yùn)算符來(lái)檢查null值。使用這里展示的運(yùn)算符來(lái)處理null值的主要目標(biāo)是避免編寫(xiě)處理異常的代碼。使用這些技術(shù),可以保持代碼的整潔和可管理性。
到此這篇關(guān)于詳解如何在C#中處理空值的文章就介紹到這了,更多相關(guān)C#處理空值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# WinForm實(shí)現(xiàn)自動(dòng)更新程序的方法詳解
這一篇就著重寫(xiě)一下客戶端的代碼,客戶端主要實(shí)現(xiàn)的有:?jiǎn)?dòng)后檢測(cè)本地的xml文件,然后發(fā)送到服務(wù)器獲取需要更新的文件以及版本列表,感興趣的小伙伴可以了解一下2022-10-10C#針對(duì)xml文件轉(zhuǎn)化Dictionary的方法
這篇文章主要介紹了C#針對(duì)xml文件轉(zhuǎn)化Dictionary的方法,是C#操作XML文件的典型應(yīng)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01

C# 向二進(jìn)制文件進(jìn)行讀寫(xiě)的操作方法