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