C# 空值處理運(yùn)算符??、?. 及其它常用符號(hào)
更新時(shí)間:2025年11月20日 11:49:04 作者:siyun.chen
本文主要介紹了C# 空值處理運(yùn)算符??、?. 及其它常用符號(hào),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
一、核心運(yùn)算符:直接解決空值問題
1.??空合并運(yùn)算符
- 作用:左側(cè)為
null時(shí),返回右側(cè)值,否則返回左側(cè)值。 - 代碼對(duì)比:
// 傳統(tǒng)寫法 string name; if (input != null) { name = input; } else { name = "Unknown"; } // 使用 ?? 簡化 string name = input ?? "Unknown";
2.?.空條件運(yùn)算符
- 作用:安全訪問成員或方法,避免空引用異常。
- 代碼對(duì)比:
// 傳統(tǒng)寫法(可能崩潰) int length = person.Address.City.Length; // 使用 ?. 安全訪問 int? length = person?.Address?.City?.Length; // 任何一級(jí)為null則返回null
二、輔助運(yùn)算符:擴(kuò)展空值處理場景
3.??=空合并賦值(C# 8+)
- 作用:變量為
null時(shí)賦新值。List<int> data = null; data ??= new List<int>(); // 等效:if (data == null) data = new List<int>();
4.!非空斷言(C# 8+)
- 作用:明確告訴編譯器“此處不為
null”,慎用!string? text = GetText(); Console.WriteLine(text!.Length); // 開發(fā)者保證text非空
三、其他常用運(yùn)算符:提升代碼效率
5.?:三元運(yùn)算符
- 作用:簡化條件判斷。
string status = score > 60 ? "通過" : "未通過";
6.as安全類型轉(zhuǎn)換
- 作用:轉(zhuǎn)換失敗返回
null,不拋異常。object obj = "Hello"; string str = obj as string; // 成功返回字符串,失敗返回null
7.is類型檢查與模式匹配(C# 7+)
- 作用:類型判斷與值提取一步到位。
if (obj is int number) { Console.WriteLine($"數(shù)字:{number}"); }
四、速查表:運(yùn)算符使用場景
| 問題場景 | 運(yùn)算符 | 示例代碼 | 等效傳統(tǒng)寫法 |
|---|---|---|---|
| 變量為空時(shí)使用默認(rèn)值 | ?? | var result = value ?? 0; | value != null ? value : 0 |
| 安全訪問可能為空的對(duì)象 | ?. | var city = person?.Address?.City; | if (person != null) person.Address... |
| 延遲初始化 | ??= | list ??= new List(); | if (list == null) list = new... |
| 明確斷言變量非空 | ! | text!.Trim(); | 無直接等效(需自行確保非空) |
五、避坑指南
別濫用
!運(yùn)算符// 錯(cuò)誤用法:隱藏潛在的空引用風(fēng)險(xiǎn) var length = GetNullableString()!.Length; // 正確做法:優(yōu)先使用 ?? 或 ?. var safeLength = GetNullableString()?.Length ?? 0;
值類型可空處理
int? nullableInt = null; int value = nullableInt ?? -1; // 必須處理null!
到此這篇關(guān)于C# 空值處理運(yùn)算符??、?. 及其它常用符號(hào)的文章就介紹到這了,更多相關(guān)C# 空值處理運(yùn)算符 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#?wpf定義ViewModelBase進(jìn)行簡化屬性綁定
綁定機(jī)制是wpf的核心,也是界面獨(dú)立的根本,尤其是使用了mvvm模式,本文主要介紹了wpf如何定義ViewModelBase進(jìn)行簡化屬性綁定,需要的可以參考下2024-04-04
C#控制臺(tái)程序輸出等腰三角形并居中顯示實(shí)例
這篇文章主要介紹了C#控制臺(tái)程序輸出等腰三角形并居中顯示實(shí)例,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03

