iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
自我挑戰組

C# 和 SQL 探索之路系列 第 4

Day 4: C# 關鍵字: ?

  • 分享至 

  • xImage
  •  

寫完上一篇 is 以後,我才發現 is 有比想像中更多不同判斷的用法。今天接著繼續介紹的是 ? 運算子,它在 C# 裡面也有多種不同的用法。

?. 運算子 : Null 條件運算子 (如果 anull 時, a?.xa?[x] 的評估結果也會是 null,不為 null 時則等同於原本的值 a.xa[x]

根據微軟官方文件,假如有多個變數或成員以 ?. 連接,那麼最後的變數或執行方法不會被評估。
節錄官方的範例,註解如下:

person?.Name.Write(); // 最後的 Write() 方法不會被執行
try {
(person?.Name).Write();    
}
catch (NullReferenceException) {
Console.WriteLine("NullReferenceException");
]}; // 會觸發 NullReferenceException

? 運算子:可稱為三元運算子 (ternary operator),在敘述中做簡易的判斷,可以簡化原本要用 if 表示的邏輯。用法為:變數 = 條件式 ? 成立 : 不成立,例如

Int a = 0;
Int b = 0;
a = b > 0 ? 1 : 0;

第三行的邏輯是,假如 b > 0,則 a = 1,否則為 0。以上的例子中,a 將為 0。

int? a 宣告:表示該變數是可以被指定為 null (Nullable Type),可用在資料庫中有 null 欄位的處理 (例如資料庫中的 int 欄位,可以是數字或 null)。

Nullable 型別本身提供 hasValue 屬性,可判斷是不是 null 值,且可以使用 Value 屬性取得數值。相關的範例,請參考下方 Stack Overflow 問題的回答。

參考資料:


上一篇
Day 3: C# 關鍵字: is
下一篇
Day 5: C# 關鍵字: var 和 dynamic
系列文
C# 和 SQL 探索之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言