欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

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

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

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

if (variable is not null)

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

  1. 傳統(tǒng)空檢查

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

if (variable != null)  

{  

    // Do something with variable  

}

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

if (variable is not null)  

{  

    // Do something with variable  

}

如果要編寫需要與舊版本的 C# 兼容的代碼,則應(yīng)使用 ,因為直到 C# 9 才引入運(yùn)算符。!= 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.  

}

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

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

條件訪問運(yùn)算符在 C# 6.0 中引入,是一個功能強(qiáng)大的工具,可以幫助你編寫更簡潔、更可靠的代碼。通過使用條件訪問運(yùn)算符,可以避免為訪問的每個引用類型編寫顯式 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;

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

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

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

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

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

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

null 合并運(yùn)算符的語法如下:

int result = leftOperand ?? rightOperand;

其中 和 是任意類型的表達(dá)式。leftOperandrightOperand

如果計算結(jié)果為 null,則 null 合并運(yùn)算符將返回 .否則,null 合并運(yùn)算符將返回 .leftOperandrightOperandleftOperand

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

以下是如何使用 null 合并運(yùn)算符的一些示例:

// 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. 保護(hù)條款:

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

public void SomeMethod(string variable)

{

  if (variable == null)

  {

  throw new ArgumentNullException(nameof(variable));

  }

  // Rest of the method logic

}


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

首選方式:保護(hù)子句

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

  1. 早期檢測:

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

2. 代碼可讀性:

在 guard 子句中顯式引發(fā)異??墒勾a更具可讀性。它清楚地表明,對于給定的上下文,null 值是不可接受的。

3.一致性:

保護(hù)子句強(qiáng)制采用一致的方法跨方法進(jìn)行 null 檢查,確保開發(fā)人員遵守標(biāo)準(zhǔn)化做法。

空檢查的重要性:

執(zhí)行可靠的 null 檢查至關(guān)重要,原因如下:

  1. 防止 Null 引用異常:

空引用異常可能導(dǎo)致應(yīng)用程序崩潰和不可預(yù)知的行為??煽康?null 檢查通過及早捕獲 null 引用來幫助防止這些問題。

2. 增強(qiáng)代碼可靠性:

執(zhí)行良好的 null 檢查有助于提高代碼庫的整體可靠性,降低出現(xiàn)錯誤的可能性并提高應(yīng)用程序的健壯性。

3. 提高可維護(hù)性:

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

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


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