【无标题】

  1. +号优先级高于三元运算符
    int? a=0;
    var m=a==0?1:2+10; //m=1;

如果+运算符优先级没三元高,那结果应该是1+10。
+号的优先级比三元运算符高,所以var m=a==0?1:(2+10)
2.+的优先级大于??
??为空合并运算符,a??b,如果a非null还是a,否则才会执行b。。a为null时才会执行b。
int? b=0;
var n=b??0+10; //结果是0

应该是按照var n=b??(0+10);来运算,结果是0
如果空合并运算符优先级大于+号,则var n=b??0+10,结果应该是10
int? a2=null;
var n1=a2??0+10;//结果是10

3.三元运算符大于空合并运算符
int? d=null;
var p=d0?d??(d0):10;//结果为10

你可能感兴趣的:(c#)