1.單問號(?) 1.1 單問號運算符可以表示:可為Null類型,C#2.0裡面實現了Nullable數據類型 //A.比如下麵一句,直接定義int為null是錯誤的,錯誤提示為無法將null轉化成int,因為後者是不可以為null的值類型。 private int getNum = null; / ...
1.單問號(?)
1.1 單問號運算符可以表示:可為Null類型,C#2.0裡面實現了Nullable數據類型
//A.比如下麵一句,直接定義int為null是錯誤的,錯誤提示為無法將null轉化成int,因為後者是不可以為null的值類型。
private int getNum = null;
//B.如果修改為下麵的寫法就可以初始指為null,在特定情況下?等同於基礎類型為Nullable。
private int? getNum = null;
private Nullable<int> getNumNull = null;
2.雙問號(??)
?? 運算符稱為 null 合併運算符,用於定義可以為 null 值的類型和引用類型的預設值。如果此運算符的左操作數不為 null,則此運算符將返回左操作數;否則返回右操作數。
//A.定義getNum為null,輸出結果為0 private int? getNum = null; Console.WriteLine(getNum ?? 0); //B.定義getNum為1,輸出結果為1 private int getNum = 1; Console.WriteLine(getNum ?? 0);
3. ?.如果為空不報錯誤,不為空原值輸出
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApp2 { class Program { static void Main(string[] args) { myFun(null); // 123 myFun("456");// 456 Person personA = new Person() { name = "chenyishi" }; Console.WriteLine(personA?.name); personA = null; Console.WriteLine(personA?.name);//person==null,仍不會報錯 } static void myFun(string argA) { Console.WriteLine(argA ?? "123"); //argA==null,則輸出123 } } class Person { public string name { get; set; } } }
原文:
https://www.cnblogs.com/appleyrx520/p/7018610.html
https://www.cnblogs.com/chenyishi/p/8329752.html