C# ?問號運算子知多少
總結一下C#中問號有三種
第一:三目操作運算子【 ? : 】
問號前面的是條件,後面的是結果,條件滿足返回冒號前面的值否則後面的值
事例
<span style="white-space:pre"> </span>public int WhoBig(int a, int b)
{
return a > b ? a : b;
}
public int WhoSmall(int a, int b)
{
return a < b ? a : b;
//等價於
/*if (a < b)
return a;
else
return b;
* */
}
第二:基本資料型別可空識別符號【?】
宣告的變數可以為空,比如int,string,但是布林值為空依然報錯
事例
<span style="white-space:pre"> </span>int i = null;//報錯
bool j = null; //報錯
int? k = null;//通過
bool? m = null; //報錯
第三:null合併運算子【??】
賦值的結果中的變數如果為空則用??後面的值替代前面的變數,否則直接用前面的變數
如果此運算子的左運算元不為 null,則此運算子將返回左運算元;否則返回右運算元
事例
<span style="white-space:pre"> </span>public string Hongyan(string a)
{
string res = a;
if (a == null)
res = "";
//等價於
res = a ?? "";
return res;
}
如果a為空就選擇??後面的值否則前面的值
第四:null條件運算子【?.】
用於在執行成員訪問 (?.) 或索引 (?[) 操作之前,測試是否存在 NULL。 這些運算子可幫助編寫更少的程式碼來處理 null 檢查,尤其是對於下降到資料結構。int? length = customers?.Length; // null if customers is null
Customer first = customers?[0]; // null if customers is null
int? count = customers?[0]?.Orders?.Count(); // null if customers, the first customer, or Orders is null
A?.B?.C?[0] ?? E
A?.B?.C?[0] == E
var handler = this.PropertyChanged;
if (handler != null)
handler(…)
新的方法是要簡單得多:
PropertyChanged?.Invoke(e)
你需要顯式呼叫 Invoke 方法,因為不存在 NULL 條件委託呼叫語法 PropertyChanged?(e)。 有太多不明確的分析情況來允許它。
相關文章
- 瞭解下C# 運算子C#
- JavaScript == 等號運算子JavaScript
- JavaScript - 負號運算子JavaScript
- JavaScript + 正號運算子JavaScript
- JavaScript (+) 正號運算子JavaScript
- C# ~按位取反運算子C#
- C#學習 運算子(20)C#
- 瞭解下C# 運算子過載C#
- c#入門-關係運算子C#
- JavaScript >> 有符號右移運算子JavaScript符號
- JavaScript 等號 = 賦值運算子JavaScript賦值
- C#中的?.和!.運算子(連結)C#
- JavaScript 三個等號 === 全等運算子JavaScript
- 運算子 運算子
- JavaScript >>> 三個大於號無符號右移運算子JavaScript符號
- php運算子 比較運算子 邏輯運算子 三元運算子PHP
- 運算子-賦值運算子賦值
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- C#運算子過載---逐步地分析與理解C#
- java基礎一:基本型別,運算子號Java型別
- 運算子的關係,什麼叫一元運算子,二元運算子,三元運算子,運算子優先順序,以及運算子的
- 深入理解Java雙冒號(::)運算子的使用Java
- 運算子
- php比較運算子的安全問題PHP
- javascript中&&運算子和||運算子的使用JavaScript
- 算術運算子裡的特殊運算子
- Python 運算子優先順序 運算子Python
- Python學習-算術運算子,賦值運算子和複合運算子Python賦值
- java零基礎自學第一天②,運算子:表示式,算術運算子,+操作,賦值運算子,自增自減運算子,關係運算子,邏輯運算子,三元運算子Java賦值
- 【C】 18_三目運算子和逗號表示式
- 賦值運算子和+號的用法(兩個練習)賦值
- Bash 指令碼:`(反引號)運算子和 $()的使用方式指令碼
- php運算子運用之型別運算子該如何使用PHP型別
- C++ 迭代器運算子 箭頭運算子->C++
- JS-11 運算子之布林運算子JS
- Java 運算子Java
- Java運算子Java
- js運算子JS