最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#對(duì)NULL的簡(jiǎn)化賦值的方法總結(jié)

 更新時(shí)間:2024年11月18日 11:34:51   作者:qtvb1987  
在C#中,對(duì)null賦值意味著將引用類型的變量設(shè)置為無引用或者說空引用,當(dāng)你聲明一個(gè)引用類型的變量,如果沒有給它初始化具體的對(duì)象,那么它的值就是null,本文給大家介紹了C#對(duì)NULL的簡(jiǎn)化賦值的方法總結(jié),需要的朋友可以參考下

1. NULL合并操作符(??)

null合并操作符(??)是一個(gè)簡(jiǎn)寫操作符,用于在左側(cè)對(duì)象不為null時(shí)返回左側(cè)值,在左側(cè)對(duì)象為null時(shí)返回右側(cè)值。當(dāng)您在判斷當(dāng)前對(duì)象值是否null值并且賦值新對(duì)象需要簡(jiǎn)寫時(shí),此操作符非常有用。

string name = null;
string result = name ?? "Unknown";
Console.WriteLine(result); // Output: Unknown

在上面的示例中,由于name的值為null,因此使用null合并運(yùn)算符將“Unknown”的值賦給result。

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

條件運(yùn)算符(?:)是一個(gè)三元運(yùn)算符,用于代替if-else的簡(jiǎn)寫,如果條件為真則返回一個(gè)值,如果條件為假則返回另一個(gè)值。當(dāng)需要根據(jù)條件提供默認(rèn)值時(shí),此操作符很有用。

string name = null;
string result = (name != null) ? name : "Unknown";
Console.WriteLine(result); // Output: Unknown

上面的例子中,由于name的值為null,因此使用條件運(yùn)算符將“Unknown”的值賦給result。

3. 空條件運(yùn)算符(?.)

如果對(duì)象不為空,則使用空條件操作符(?.)訪問對(duì)象的成員,否則返回空。當(dāng)您需要訪問可能為空的對(duì)象的屬性或方法時(shí),此操作符非常有用。

string name = null;
int? length = name?.Length;
Console.WriteLine(length); // Output: null

在上面的例子中,因?yàn)閚ame的值是空的,所以length的值也是空的。

但你也可以利用 合并操作運(yùn)算符(??) 進(jìn)行進(jìn)階的寫法,代碼如下:

string name = null;
int length = name?.Length??0;
Console.WriteLine(length); // Output: 0

可以看到上面的代碼例子里,length可以不用空的值類型獲取name的長(zhǎng)度,可以在你的業(yè)務(wù)邏輯里認(rèn)為null的字符串長(zhǎng)度也可以是0長(zhǎng)度,減少后期值類型的復(fù)雜判斷。

4. 空合并賦值操作符 (??=)

空合并賦值操作符(??=)用于在左側(cè)對(duì)象為空時(shí)將右側(cè)對(duì)象賦值給左側(cè)。意思就是如果變量對(duì)象為空,可以給它賦值一個(gè)默認(rèn)對(duì)象值,在理解上它可以簡(jiǎn)化代碼并使其更加簡(jiǎn)潔。

string name = null;
name ??= "Unknown";
Console.WriteLine(name); // Output: Unknown

在上面的示例中,由于name的值為空,因此使用空合并賦值操作符將“Unknown”的值賦給name。

5. 寬容運(yùn)算符 (!.)

允許為空的操作符(!.)用于告訴編譯器值不為空,即使編譯器無法確定該值不為空。當(dāng)您知道一個(gè)值不會(huì)為空,但編譯器無法確定它不會(huì)為空時(shí),此操作符很有用。

string name = null!;
int length = name.Length;
Console.WriteLine(length); // Output: System.NullReferenceException

在上面的例子中,寬容操作符用于告訴編譯器name的值不可為空。但是,由于name的值實(shí)際上是空的,所以系統(tǒng)在運(yùn)行時(shí)拋出NullReferenceException。

6. 使用 is 運(yùn)算符

在C#編程語(yǔ)言中,“is”操作符是一個(gè)關(guān)鍵字,用于檢查變量是否與特定類型兼容。隨著C#7.0中常量模式的引入,這個(gè)運(yùn)算符獲得了額外的功能。具體來說,現(xiàn)在可以使用“is”操作符將值與常量(如null)進(jìn)行比較。

if (name is null)
{
   // code to execute
}
Console.WriteLine(name);

使用“is”運(yùn)算符的擴(kuò)展功能使開發(fā)人員能夠在c#應(yīng)用程序中執(zhí)行類型檢查和比較時(shí)編寫更簡(jiǎn)潔、更可讀的代碼。

或者,您也可以使用操作符檢查:==null

object obj = null;

if (obj == null)
{
    // do something if obj is null
}
else
{
    // do something else if obj is not null
}

這兩種方法都可以,但是使用操作符進(jìn)行檢查可能更具可讀性和表現(xiàn)力,特別是當(dāng)與其他類型檢查 is null 結(jié)合使用時(shí)。

7. ArgumentNullException 參數(shù)空異常

最后,ArgumentNullException類用于處理傳遞給方法或構(gòu)造函數(shù)的空參數(shù)。當(dāng)您需要確保傳遞給方法或構(gòu)造函數(shù)的參數(shù)不為空時(shí),該類非常有用。

public void DoSomething(string name)
{
    if (name == null)
    {
        throw new ArgumentNullException(nameof(name));
    }
    
    Console.WriteLine($"Hello, {name}!");
}

// Usage
DoSomething(null); // Output: System.ArgumentNullException: Value cannot be null. (Parameter 'name')

在上面的例子中,ArgumentNullException類用于在name的值為空時(shí)拋出異常。

到此這篇關(guān)于C#對(duì)NULL的簡(jiǎn)化賦值的方法總結(jié)的文章就介紹到這了,更多相關(guān)C#對(duì)NULL賦值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#實(shí)現(xiàn)的ACCESS數(shù)據(jù)庫(kù)操作類完整實(shí)例

    C#實(shí)現(xiàn)的ACCESS數(shù)據(jù)庫(kù)操作類完整實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)的ACCESS數(shù)據(jù)庫(kù)操作類,結(jié)合完整實(shí)例形式分析了C#針對(duì)access數(shù)據(jù)庫(kù)增刪改查、事務(wù)、結(jié)果處理等相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • C#防止序列化文件丟失和損壞的解決方案

    C#防止序列化文件丟失和損壞的解決方案

    本文介紹了如何在C#中防止序列化文件丟失和損壞,核心思路包括自動(dòng)備份、多位置存儲(chǔ)、原子寫入、哈希校驗(yàn)、版本兼容、異常容錯(cuò)和加密壓縮,作者提供了完整的解決方案和代碼示例,并詳細(xì)解釋了如何在工業(yè)場(chǎng)景中應(yīng)用這些策略,以及避免常見問題的方法,需要的朋友可以參考下
    2026-02-02
  • WPF動(dòng)態(tài)生成行列可變表格的實(shí)現(xiàn)方法詳解

    WPF動(dòng)態(tài)生成行列可變表格的實(shí)現(xiàn)方法詳解

    在做WPF開發(fā)的時(shí)候,經(jīng)常會(huì)遇到需要展示表格數(shù)據(jù)的場(chǎng)景,本文將為大家詳細(xì)介紹一下如何使用WPF動(dòng)態(tài)生成行列可變表格,感興趣的小伙伴可以參考下
    2026-02-02
  • C#利用TreeView控件實(shí)現(xiàn)目錄跳轉(zhuǎn)

    C#利用TreeView控件實(shí)現(xiàn)目錄跳轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了C#潤(rùn)滑利用TreeView控件實(shí)現(xiàn)目錄跳轉(zhuǎn)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下
    2022-07-07
  • C#獨(dú)立域名查詢代碼

    C#獨(dú)立域名查詢代碼

    C#獨(dú)立域名查詢代碼...
    2007-04-04
  • winform實(shí)現(xiàn)拖動(dòng)文件到窗體上的方法

    winform實(shí)現(xiàn)拖動(dòng)文件到窗體上的方法

    這篇文章主要介紹了winform實(shí)現(xiàn)拖動(dòng)文件到窗體上的方法,以實(shí)例分析了C#中WinForm操作窗體及文件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • Stream.Write 與 StreamWriter.Write 的不同

    Stream.Write 與 StreamWriter.Write 的不同

    Stream.Write 與 StreamWriter.Write 是我們?cè)谙蛄髦袑憯?shù)據(jù)時(shí),最常用的方法。下面就詳細(xì)講解這兩個(gè)方法。
    2013-04-04
  • 基于C#動(dòng)態(tài)生成帶參數(shù)的小程序二維碼

    基于C#動(dòng)態(tài)生成帶參數(shù)的小程序二維碼

    在微信小程序管理后臺(tái),我們可以生成下載標(biāo)準(zhǔn)的小程序二維碼,提供主程序入口功能,在實(shí)際應(yīng)用開發(fā)中,小程序二維碼是可以攜帶參數(shù)的,可以動(dòng)態(tài)進(jìn)行生成,本文小編就給大家介紹一下如何基于C#動(dòng)態(tài)生成帶參數(shù)的小程序二維碼,感興趣的朋友可以參考下
    2023-12-12
  • LINQ基礎(chǔ)之Intersect、Except和Distinct子句

    LINQ基礎(chǔ)之Intersect、Except和Distinct子句

    這篇文章介紹了LINQ使用Intersect、Except和Distinct子句的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#調(diào)用python文件執(zhí)行

    C#調(diào)用python文件執(zhí)行

    這篇文章主要為大家詳細(xì)介紹了C#調(diào)用python文件執(zhí)行的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評(píng)論

乐安县| 阿拉善左旗| 璧山县| 巴彦淖尔市| 罗源县| 岐山县| 长兴县| 田林县| 郁南县| 正定县| 山西省| 清徐县| 姚安县| 合阳县| 拉萨市| 滦南县| 巨野县| 固镇县| 泸定县| 安陆市| 和田市| 米泉市| 玉龙| 金秀| 江安县| 河西区| 巴中市| 武汉市| 中卫市| 西昌市| 满城县| 朝阳县| 观塘区| 平舆县| 陆川县| 博罗县| 章丘市| 晋州市| 沙湾县| 墨竹工卡县| 建阳市|