检查一个值是否是一组值中的一个的最简单方法是什么?
例如。
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较大时响应不会降低。