检查一个值是否是一组值中的一个的最简单方法是什么?

例如。

if (new List<CustomerType>{CustomerType.Overseas, CustomerType.Interstate}.Contains(customerType))
{
    // code here
}

最佳答案

为什么要创建一个列表?
为什么每次都要创建它?

HashSet是最快的包含。

private HashSet<CustomerType> CustomerTypes = new HashSet<CustomerType>() {CustomerType.Overseas, CustomerType.Interstate};
if (CustomerTypes.Contains(customerType))
{ }


进行了更多讨论。
考虑速度。
如果您只评估一次(或内联),那么这将获胜

if (customerType == CustomerType.Overseas || customerType == CustomerType.Interstate)
{
    // code here
}


如果您要评估多次,则HashSet将获胜。
在应用程序启动时一次创建HashSet。
不要每次都创建HashSet(或List或Array)。

对于较小的数字,列表或数组可能会获胜,但包含为O(n),因此响应将随着列表的增加而降低。

HashSet.Contains为O(1),因此当n较大时响应不会降低。

09-25 13:54