一、1个?的用法
1. 表示可空数据类型,如 int? bool?
2. 跟在对象后,如该对象为null,则不会触发空值异常,且整个表达式返回null,如:
string kk = "123";
volcalc=null; //volcalc为复合对象
kk=volcalc?.digVm?.outCeiling?.outRing();
结果:kk=null;
又如:当innerCeiling为null时,该表达式返回null。digvm.innerCeiling?.outRing?.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
但包含的?对象不能被赋值,如语法错误(?在对象的最后也不行):digvm.outCeiling?.outRing = "abc"; //错误表达式
二、??的用法
??可连接两个对象,表示如果前面的对象为null则取后面的对象
int? ii=null;
string cc=null;
ii = ii ?? 5;
cc = cc ?? ii.ToString();
结果:cc="5"
三、3元表达式 aa?bb:cc
aa为1逻辑表达式,如果aa=true,返回bb,否则返回cc