关于c#:?

? Operator used in LINQ

本问题已经有最佳答案,请猛点这里访问。

我刚开始学习Linq,然后坚持使用教程中提供的示例语句(请不要说我正在使用C.NET框架)。声明

1
 arr?.Count(w => w != null) > 0

仅当arr中(数组或列表)的元素至少为一个none空元素时返回True。但是,?运营商在那里做什么?这是另一种形式或三元运算符还是其他形式?请分享你在这一点上的宝贵知识。我会很高兴也很感激你给我的回答。

注意:我试图在语句中删除?运算符,但找不到任何区别。


它是空条件运算符

它基本上是检查空值,如果不是空值,则执行条件。在arr为空的情况下,此代码不会引发异常。如果不使用空条件运算符编写,您将得到一个NullReferenceException

1
2
3
4
5
6
7
// this would throw an exception
int?[] arr;
arr.Count(w => w != null) > 0;

// this will check if arr is null and not proceed to call the .Count method
int?[] arr;
arr?.Count(w => w != null) > 0;