You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中能否用SingleOrDefault()简化列表判断逻辑?

结论:老板的写法不满足你的需求

直接写return list.SingleOrDefault()会在两个关键场景下违反你的需求,甚至抛出异常:

  • 当list为null时:调用list.SingleOrDefault()会触发NullReferenceException,但你要的是返回null。
  • 当list包含多个元素时:SingleOrDefault()会抛出InvalidOperationException,而你需要返回null。

只有当列表恰好有1个元素,或者是空列表时,老板的写法和你的原代码行为一致。

符合需求的简化写法

你可以用空传播运算符简化原代码,同时保证逻辑正确:

return list?.Count == 1 ? list[0] : null;

或者结合LINQ的Count():

return list?.Count() == 1 ? list.Single() : null;

这两种写法都能覆盖所有场景:

  • list为null → 返回null
  • list元素数量≠1 → 返回null
  • list元素数量=1 → 返回该元素

内容的提问来源于stack exchange,提问作者diu_too_too

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:32:07