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

Iva*_*ono 8 c# c#-6.0

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

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

public class OtherObject
{
    public bool IsValid() { return true; }
}
Run Code Online (Sandbox Code Playgroud)

目前在我的代码中我做:

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

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

bool? ok = myObject.OtherObjects?.Last()?.IsValid();
Run Code Online (Sandbox Code Playgroud)

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

序列不包含任何元素.

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

或者,还有更好的方法?

Tox*_*ron 6

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

你可以简单地做:

bool ok = myObject.OtherObjects?.LastOrDefault()?.IsValid() ?? false;
Run Code Online (Sandbox Code Playgroud)