一、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(" \r\n".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