C# ?的7种用法

  • C# ?的7种用法已关闭评论
  • 93 次浏览
  • A+
所属分类:.NET技术

1. 可空类型修饰符?

int i? num=null;//表示可空的整型 DateTime time? dateTime=null; //表示可空的时间 

2.三元(运算符)表达式?:

x?y:z //表示如果表达式x为true,则返回y,如果x为false,则返回z,是省略if{}else{}的简单形式。 

3.NULL检查运算符?.

int? first = customers?[0].Orders.Count(); 

(1)?[ ]

int? first = customers?[0].Orders.Count(); 

(2)?[]?

public static Delegate? Combine(params Delegate?[]? delegates) {     if (delegates == null || delegates.Length == 0)         return null;      Delegate? d = delegates[0];     for (int i = 1; i < delegates.Length; i++)         d = Combine(d, delegates[i]);      return d; } //params Delegate?[] delegates -它是可为空的数组 Delegate  //params Delegate?[]? delegates -整个数组可以为空  

4.空合并运算符??

(1)??

//用于定义引用类型和可空类型的默认值。如果此运算符的左操作数不为Null,则此操作符将返回左操作数,否则返回右操作数。  var c = a??b //当a不为null时返回a,为null时返回b 

(2)null 合并赋值运算符??=

仅当左操作数计算为 null 时,才能使用运算符 ??= 将其右操作数的值分配给左操作数。 List<int> numbers = null; int? i = null;   numbers ??= new List<int>(); numbers.Add(i ??= 17); numbers.Add(i ??= 20);   Console.WriteLine(string.Join(" ", numbers));  // output: 17 17 Console.WriteLine(i);  // output: 17