狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#語言中 null 檢查的最佳實踐

admin
2024年2月29日 15:59 本文熱度 581

概述:在_C# 應用程序,空引用異常通常是問題和運行時失敗的原因。適當的 null 檢查對于保護代碼免受此類問題的影響是必要的。本文將介紹在 C# 中執行 null 檢查的多種方法,介紹推薦的方法,并提供示例來演示如何使用每種方法。傳統空檢查:檢查 null 的最直接方法是通過顯式比較。例如:if (variable != null) {     // Do something with variable }使用運算符檢查 null 值。 is not null 運算符是檢查 null 值的安全方法,即使 not 相等運算符 (!= null) 已被重寫也是如此。

if (variable is not null)

在_C# 應用程序,空引用異常通常是問題和運行時失敗的原因。適當的 null 檢查對于保護代碼免受此類問題的影響是必要的。本文將介紹在 C# 中執行 null 檢查的多種方法,介紹推薦的方法,并提供示例來演示如何使用每種方法。

  1. 傳統空檢查

檢查 null 的最直接方法是通過顯式比較。例如:

if (variable != null)  

{  

    // Do something with variable  

}

使用運算符檢查 null 值。 is not null 運算符是檢查 null 值的安全方法,即使 not 相等運算符 (!= null) 已被重寫也是如此。is not null

if (variable is not null)  

{  

    // Do something with variable  

}

如果要編寫需要與舊版本的 C# 兼容的代碼,則應使用 ,因為直到 C# 9 才引入運算符。!= nullis not null

以下是一些何時使用和 :is not null!= null

// Use `is not null` if you are working with code that you do not control.

object obj = GetObjectFromSomewhere();  

if (obj is not null)  

{  

  // Do something with the object.  

}  


// Use \`!= null\` if you are working with code that you control, and you know that the equality operator has not been overloaded.  


string name = GetName();  

if (name != null)  

{  

  // Do something with the name.  

}  


// Use \`!= null\` if you need to be compatible with older versions of C#.  

int? number = GetNumber();  

if (number != null)  

{  

  // Do something with the number.  

}

雖然這種方法簡單且廣泛使用,但它可能容易出錯,尤其是在大型代碼庫中,開發人員可能會忘記包含 null 檢查,從而導致意外崩潰。

2. 條件訪問運算符 (?.):

條件訪問運算符在 C# 6.0 中引入,是一個功能強大的工具,可以幫助你編寫更簡潔、更可靠的代碼。通過使用條件訪問運算符,可以避免為訪問的每個引用類型編寫顯式 null 檢查。例如:

// Access a member of a class.  

Person person = GetPerson();  

string name = person?.Name;  

  

// Access a member of a struct.  

DateTime date = GetDate();  

int day = date?.Day;  

  

// Access a member of an interface.  

IEnumerable<int> numbers = GetNumbers();  

int firstNumber = numbers?.First();  

  

// Access a member of a nullable reference type.  

int? number = GetNumber();  

int value = number?.Value ?? -1;

下面是使用條件訪問運算符的一些好處:Here are some of the benefits of using the conditional access operator:

它使您的代碼更加簡潔和可讀。

它有助于防止 null 引用異常。

它使您的代碼更加健壯和可靠。

3. 空合并算子 (??):

C# 中的 null 合并運算符 (??) 是一個二進制運算符,如果它不為 null,則返回其左側操作數,否則返回其右側操作數。

null 合并運算符的語法如下:

int result = leftOperand ?? rightOperand;

其中 和 是任意類型的表達式。leftOperandrightOperand

如果計算結果為 null,則 null 合并運算符將返回 .否則,null 合并運算符將返回 .leftOperandrightOperandleftOperand

null 合并運算符可用于為表達式提供默認值,即使表達式的計算結果為 null 也是如此。這對于避免空引用異常和編寫更簡潔易讀的代碼非常有用。

以下是如何使用 null 合并運算符的一些示例:

// Provide a default value for a variable.  

string name = person?.Name ?? "Unknown";  

  

// Get the first element of a collection, or return null if the collection is empty.  

int firstNumber = numbers?.First() ?? 0;  

  

// Get the length of a string, or return 0 if the string is null.  

int length = string?.Length ?? 0;

4. 保護條款:

保護子句涉及在方法開始時檢查 null,并在滿足條件時提前退出。這種方法可以增強代碼的可讀性和可維護性。例:

public void SomeMethod(string variable)

{

  if (variable == null)

  {

  throw new ArgumentNullException(nameof(variable));

  }

  // Rest of the method logic

}


保護子句通過在方法的入口點捕獲 null 引用來防止下游問題特別有用。

首選方式:保護子句

在這些方法中,guard 子句通常被認為是在 C# 中執行 null 檢查的首選方法。原因如下:

  1. 早期檢測:

保護子句在方法的最早時間點捕獲 null 引用,從而防止進一步執行并降低下游問題的可能性。

2. 代碼可讀性:

在 guard 子句中顯式引發異常可使代碼更具可讀性。它清楚地表明,對于給定的上下文,null 值是不可接受的。

3.一致性:

保護子句強制采用一致的方法跨方法進行 null 檢查,確保開發人員遵守標準化做法。

空檢查的重要性:

執行可靠的 null 檢查至關重要,原因如下:

  1. 防止 Null 引用異常:

空引用異常可能導致應用程序崩潰和不可預知的行為。可靠的 null 檢查通過及早捕獲 null 引用來幫助防止這些問題。

2. 增強代碼可靠性:

執行良好的 null 檢查有助于提高代碼庫的整體可靠性,降低出現錯誤的可能性并提高應用程序的健壯性。

3. 提高可維護性:

包含顯式 null 檢查的代碼更易于維護。它可以幫助開發人員快速了解對變量值的期望,從而更輕松地進行未來的修改和調試。

盡管還有其他方法,但最好的方法是采用保護子句,因為它們具有一致性、可讀性和早期檢測能力。開發人員可以通過采用這些最佳實踐來使其應用程序更能抵抗空引用異常,從而生成更可靠和可預測的軟件系統。


該文章在 2024/3/4 11:55:35 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved