繁体   English   中英

如何在空列表中使用空条件运算符?

[英]How to use the null-conditional operator on an empty list?

我有一个对象(这个例子保持简单),例如:

public class MyObject
{
    public ICollection<OtherObject> OtherObjects { get; set; }
}

public class OtherObject
{
    public bool IsValid() { return true; }
}

目前在我的代码中我做:

bool ok = false;
if (myObject.OtherObjects != null && myObject.OtherObjects.Count > 0)
{
    var last = myObject.OtherObjects.Last();
    ok = last.IsValid();
}

现在,使用C#6.0,可以在一行代码中执行此操作:

bool? ok = myObject.OtherObjects?.Last()?.IsValid();

但是,在这种情况下,null条件运算符将不起作用,因为上面的返回异常

序列不包含任何元素。

所以在这种情况下,我是否仍然需要使用旧的方法来检查空值而不是使用空条件运算符的新方法?

或者,还有更好的方法?

null条件运算符与@Jeroen提到的LastOrDefault()很好地结合。

你可以简单地做:

bool ok = myObject.OtherObjects?.LastOrDefault()?.IsValid() ?? false;

该列表不包含任何元素,但它不为null否则您将获得NullReferenceException 你能做的就是改变它:

bool? ok = myObject.OtherObjects?.Any() ?? false && myObject.OtherObjects.Last().IsValid();              

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM