public enum Status
{
Unspecified = 0,
Good = 1,
Broken = 2
}
IEnumerable<Status> Statuses;
如果Statuses
null
或empty
我想返回false
.
如果Statuses
包含一个或多个Broken
我想返回true
。
public bool AnyBroken => (Statuses != null) && Statuses.Count(s => s == Status.Broken) > 0;
我想简化语法。我想我可以使用?
或??
但我不太明白如何。
您可以使用Enumerable.Any。例如
public bool AnyBroken => Statuses?.Any(x=>x == Status.Broken)==true;
您可以尝试这种方式,在此处链接进行现场演示
请注意:您刚刚使用了 C# 6 功能或更高版本的Null-conditional operators
using System;
using System.Linq;
public class Program
{
public static void Main()
{
var listContainBroken = new [] { Status.Broken, Status.Unspecified };
var listDoesNotContainBroken = new [] { Status.Unspecified };
Console.WriteLine("List Contain Broken: " + listContainBroken?.Any(s => s == Status.Broken));
Console.WriteLine("List Does not Contain Broken: " + listDoesNotContainBroken?.Any(s => s == Status.Broken));
}
public enum Status
{
Unspecified = 0,
Good = 1,
Broken = 2
}
}