为了账号安全,请及时绑定邮箱和手机立即绑定

方法参数内的C#空条件运算符

方法参数内的C#空条件运算符

C#
阿晨1998 2021-04-08 18:15:17
我有以下方法: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。


查看完整回答
反对 回复 2021-04-17
  • 1 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信