欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# ?的使用小結(jié)

 更新時(shí)間:2024年11月29日 10:59:08   作者:語(yǔ)衣  
本文介紹了C#中可空類型標(biāo)記符(?)及其相關(guān)運(yùn)算符的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

可空類型標(biāo)記符(?)

說(shuō)明

  • 可空類型標(biāo)記符?用于指示某個(gè)值類型(如int、float等)可以為null。這是C# 2.0引入的一個(gè)特性,用于處理數(shù)據(jù)庫(kù)查詢、JSON解析等場(chǎng)景中可能出現(xiàn)的空值。

示例代碼

int? nullableInt = 5;
int? nullableIntWithNull = null;

if (nullableInt.HasValue)
{
    Console.WriteLine(nullableInt.Value); // 輸出: 5
}

if (!nullableIntWithNull.HasValue)
{
    Console.WriteLine("The value is null."); // 輸出: The value is null.
}

空值傳播操作符(?.)

說(shuō)明

  • 空值傳播操作符?.用于在訪問可能為null的對(duì)象的成員之前進(jìn)行空檢查。如果對(duì)象為null,則不會(huì)嘗試訪問其成員,而是直接返回null。

示例代碼

string str = null;
int? length = str?.Length; // length 為 null,因?yàn)?str 為 null

Person person = null;
string jobTitle = person?.JobTitle; // jobTitle 為 null,因?yàn)?person 為 null

person = new Person { JobTitle = "Software Engineer" };
jobTitle = person?.JobTitle; // jobTitle 為 "Software Engineer"

條件(三元)運(yùn)算符(?:)

說(shuō)明

  • 條件運(yùn)算符?:是C#中的三元運(yùn)算符,用于根據(jù)條件選擇兩個(gè)值之一。其語(yǔ)法為condition ? expression1 : expression2。

示例代碼

int x = 10;
int y = 5;
int max = x > y ? x : y; // max 為 10

Console.WriteLine("最大值: " + max);

空值合并操作符(??)

說(shuō)明

  • 空值合并操作符??用于在第一個(gè)操作數(shù)為null時(shí)返回第二個(gè)操作數(shù)的值,否則返回第一個(gè)操作數(shù)的值。這常用于提供默認(rèn)值以避免null引發(fā)的異常。

示例代碼

string name = null;
string displayName = name ?? "匿名用戶"; // displayName 為 "匿名用戶"

string username = "DeveloperDave";
displayName = username ?? "Newbie"; // displayName 為 "DeveloperDave",因?yàn)?username 不為 null

Console.WriteLine(displayName);

空值合并賦值運(yùn)算符(??=)

說(shuō)明

  • 空值合并賦值運(yùn)算符??=是C# 8.0及更高版本中引入的一個(gè)特性,它結(jié)合了空值合并運(yùn)算符(??)和賦值運(yùn)算符(=)的功能。這個(gè)運(yùn)算符用于將右側(cè)的值賦給左側(cè)的變量,但僅當(dāng)左側(cè)的變量為null時(shí)。如果左側(cè)的變量不為null,則不會(huì)更改其值。這提供了一種更簡(jiǎn)潔的方式來(lái)為可能為null的變量提供默認(rèn)值或更新它們的值,而無(wú)需編寫額外的if語(yǔ)句。

示例代碼

string firstName = null;
firstName ??= "未知"; // 如果 firstName 是 null,則將其設(shè)置為 "未知"
Console.WriteLine(firstName); // 輸出: 未知

firstName = "John";
firstName ??= "未知"; // firstName 不是 null,所以不會(huì)更改其值
Console.WriteLine(firstName); // 輸出: John

// 示例使用可空類型
int? age = null;
age ??= 30; // 如果 age 是 null,則將其設(shè)置為 30
Console.WriteLine(age.HasValue ? age.Value.ToString() : "null"); // 輸出: 30

age = 25;
age ??= 30; // age 不是 null,所以不會(huì)更改其值
Console.WriteLine(age.HasValue ? age.Value.ToString() : "null"); // 輸出: 25

// 示例使用類對(duì)象的屬性
Person person = null;
person ??= new Person { Name = "默認(rèn)名稱" }; // 如果 person 是 null,則創(chuàng)建新實(shí)例并賦值
if (person != null)
{
    Console.WriteLine(person.Name); // 如果 person 是新創(chuàng)建的實(shí)例,則輸出: 默認(rèn)名稱
}

person = new Person { Name = "John Doe" };
person.Name ??= "默認(rèn)名稱"; // person.Name 不是 null,所以不會(huì)更改其值
Console.WriteLine(person.Name); // 輸出: John Doe

在上面的示例中,??= 運(yùn)算符首先檢查左側(cè)的變量(或?qū)傩裕┦欠駷?code>null。如果是,則將其設(shè)置為右側(cè)的值;如果不是,則保持其當(dāng)前值不變。這種操作對(duì)于初始化可能為null的變量或在某些條件下更新它們非常有用。

請(qǐng)注意,最后一個(gè)示例中嘗試使用??=來(lái)更新Person對(duì)象的Name屬性可能不會(huì)按預(yù)期工作,因?yàn)?code>??=是專門為變量賦值設(shè)計(jì)的,而不是用于屬性的。在屬性上使用??=會(huì)導(dǎo)致編譯錯(cuò)誤,除非該屬性是特殊的(如可空值類型的自動(dòng)實(shí)現(xiàn)屬性)。

到此這篇關(guān)于C# ?的使用小結(jié)的文章就介紹到這了,更多相關(guān)C# ?使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c# 讀取XML文件的示例

    c# 讀取XML文件的示例

    這篇文章主要介紹了c# 讀取XML文件的示例,幫助大家更好的理解和使用c# 編程語(yǔ)言,感興趣的朋友可以了解下。
    2020-11-11
  • C#實(shí)現(xiàn)線程池的簡(jiǎn)單示例

    C#實(shí)現(xiàn)線程池的簡(jiǎn)單示例

    這篇文章主要介紹了C#實(shí)現(xiàn)線程池的簡(jiǎn)單示例,代碼簡(jiǎn)潔易懂,有助于初學(xué)的朋友更好的理解C# 的線程池,需要的朋友可以參考下
    2014-07-07
  • C#事件中的兩個(gè)參數(shù)詳解(object sender,EventArgs e)

    C#事件中的兩個(gè)參數(shù)詳解(object sender,EventArgs e)

    這篇文章主要介紹了C#事件中的兩個(gè)參數(shù)詳解(object sender,EventArgs e),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 在WPF中實(shí)現(xiàn)全局快捷鍵功能

    在WPF中實(shí)現(xiàn)全局快捷鍵功能

    這篇文章介紹了在WPF中實(shí)現(xiàn)全局快捷鍵功能的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 基于C#的socket編程的TCP異步的實(shí)現(xiàn)代碼

    基于C#的socket編程的TCP異步的實(shí)現(xiàn)代碼

    本篇文章主要介紹了基于C#的socket編程的TCP異步的實(shí)現(xiàn)代碼,詳解的講訴了TCP通信異步的實(shí)現(xiàn),有興趣的可以了解一下。
    2016-11-11
  • C#基于WebSocket實(shí)現(xiàn)聊天室功能

    C#基于WebSocket實(shí)現(xiàn)聊天室功能

    這篇文章主要為大家詳細(xì)介紹了C#基于WebSocket實(shí)現(xiàn)聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C?sharp?(#)?數(shù)據(jù)類型獲取方式

    C?sharp?(#)?數(shù)據(jù)類型獲取方式

    這篇文章主要介紹了C?sharp?(#)?數(shù)據(jù)類型獲取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Directory文件類的實(shí)例講解

    Directory文件類的實(shí)例講解

    下面小編就為大家分享一篇Directory文件類的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • C# 如何獲取出錯(cuò)的錯(cuò)誤所在行數(shù)信息

    C# 如何獲取出錯(cuò)的錯(cuò)誤所在行數(shù)信息

    本文主要介紹 C# 中獲取錯(cuò)誤所在行的方法,在開發(fā)過(guò)程中或是用戶在使用過(guò)程中,出錯(cuò)的話方便我們快速定位到錯(cuò)誤的位置,以便我們處理。
    2016-04-04
  • C#網(wǎng)絡(luò)編程中常用特性介紹

    C#網(wǎng)絡(luò)編程中常用特性介紹

    這篇文章介紹了C#網(wǎng)絡(luò)編程中常用特性,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評(píng)論