我有以下方法: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;}我认为这种情况:if (myListProcessingMethod(myList?.Where(x => x.mySatisfiedCondition()).ToList()))我将条件重构为:if (myList?.Length != 0){ if (myListProcessingMethod(myList.Where(x => x.mySatisfiedCondition()).ToList())) { a = 5; }}这两个条件是否相等?用传统方式与第一个NullConditionOperator等效的条件是什么?使用NullConditionalOperator进行第二次传统检查的等效条件是什么?
1 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
下面的语句可能会崩溃。如果myList为null,myList?.Length则将为null,并且myList?.Length != 0将为true。这意味着myList.Where可能会因空引用异常而崩溃。
if (myList?.Length != 0)
{
if (myListProcessingMethod(myList.Where(x => x.mySatisfiedCondition()).ToList()))
{
a = 5;
}
}
你可能想要
if (myList?.Length > 0)
...
仅当列表不为null且其Length大于0时,它的评估结果才为true。
- 1 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消