我有以下方法:float myMethod(MyObject[][] myList) { float a = 0; if (myListProcessingMethod(myList?.Where(x => x.mySatisfiedCondition()).ToList())) { a = 5; } return a;}bool myListProcessingMethod(List<MyObject[]> myList){ bool isSuccess = false; if (myList.Any()) { isSuccess = true; } return isSuccess;}我認(rèn)為這種情況:if (myListProcessingMethod(myList?.Where(x => x.mySatisfiedCondition()).ToList()))我將條件重構(gòu)為:if (myList?.Length != 0){ if (myListProcessingMethod(myList.Where(x => x.mySatisfiedCondition()).ToList())) { a = 5; }}這兩個(gè)條件是否相等?用傳統(tǒng)方式與第一個(gè)NullConditionOperator等效的條件是什么?使用NullConditionalOperator進(jìn)行第二次傳統(tǒng)檢查的等效條件是什么?
1 回答
Cats萌萌
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
下面的語句可能會(huì)崩潰。如果myList為null,myList?.Length則將為null,并且myList?.Length != 0將為true。這意味著myList.Where可能會(huì)因空引用異常而崩潰。
if (myList?.Length != 0)
{
if (myListProcessingMethod(myList.Where(x => x.mySatisfiedCondition()).ToList()))
{
a = 5;
}
}
你可能想要
if (myList?.Length > 0)
...
僅當(dāng)列表不為null且其Length大于0時(shí),它的評(píng)估結(jié)果才為true。
- 1 回答
- 0 關(guān)注
- 154 瀏覽
添加回答
舉報(bào)
0/150
提交
取消
