关于List「T」的Find,FirstOrDefault等类似方法返回值的空判断

在工作中使用List的Find,FirstOrDefault等方法,曾一度误以为返回值是默认值new T(); 因为下面的解释:
关于List「T」的Find,FirstOrDefault等类似方法返回值的空判断_第1张图片
可是经过几次报错后,终于想起来T引用类型的默认值其实是Null,值类型是0,所谓的new T()是自己臆想出来的来。

那得到的返回值如何判空呢?

 var entity1 = m_Dispensings.Find(q => q.InpNo == "我是肯定查不到的");
 var entity2 = m_Dispensings.FirstOrDefault(q => q.InpNo == "我是肯定查不到的");
 string str = string.Empty;

如果我们使用的是低版本,就老老实实的判null

            if (entity1 == null || entity1.MrId == null)
            {
     
                str = "默认值";
            }
            else
            {
     
                str = entity1.MrId;
            }

如果我们C#6.0–>VS2015–>.NET 4.6之后的版本

str = entity2?.MrId ?? "默认值";//如此即可

上述语法糖如果未接触过,可以查看资料:https://blog.csdn.net/spw55381155/article/details/104310809

你可能感兴趣的:(C#)