检查值是否为C#中一组值之一的最简单方法?
检查一个值是否为一组值之一的最简单方法是什么 例如检查值是否为C#中一组值之一的最简单方法?,c#,.net,list,enums,set,C#,.net,List,Enums,Set,检查一个值是否为一组值之一的最简单方法是什么 例如 if(新列表{CustomerType.Overseas,CustomerType.Interstate}.Contains(CustomerType)) { //代码在这里 } 您可以循环它,看看它是否有效。把你们想要的东西做成一个数组,然后使用for循环并比较它们 CustomerType[] customers = {new CustomerType("Overseas"), new CustomerType("Interstate")}
if(新列表{CustomerType.Overseas,CustomerType.Interstate}.Contains(CustomerType))
{
//代码在这里
}
您可以循环它,看看它是否有效。把你们想要的东西做成一个数组,然后使用for循环并比较它们
CustomerType[] customers = {new CustomerType("Overseas"), new CustomerType("Interstate")};
public CustomerType(int id, String type){
this.type = type;
}
public String getType(){return type;}
然后你可以扫描这些类型
for(int i = 0; i < CustomerTypes.customers.length; i++){
if(CustomerTypes.customers[i].getType == "Overseas"){
//CODE
}
else if(CustomerTypes.customers[i].getType == "Interstate"){
//CODE
}else{
//CODE "UNKNOWN CUSTOMER TYPE"
}
}
for(int i=0;i
我很确定这就是你的要求。但如果没有,请澄清,我将很高兴给予更多的帮助 你可以循环它,看看它是否有效。把你们想要的东西做成一个数组,然后使用for循环并比较它们
CustomerType[] customers = {new CustomerType("Overseas"), new CustomerType("Interstate")};
public CustomerType(int id, String type){
this.type = type;
}
public String getType(){return type;}
然后你可以扫描这些类型
for(int i = 0; i < CustomerTypes.customers.length; i++){
if(CustomerTypes.customers[i].getType == "Overseas"){
//CODE
}
else if(CustomerTypes.customers[i].getType == "Interstate"){
//CODE
}else{
//CODE "UNKNOWN CUSTOMER TYPE"
}
}
for(int i=0;i
我很确定这就是你的要求。但如果没有,请澄清,我将很高兴给予更多的帮助 为什么要创建列表?
为什么每次都要创建它 HashSet是最快的
private HashSet<CustomerType> CustomerTypes = new HashSet<CustomerType>() {CustomerType.Overseas, CustomerType.Interstate};
if (CustomerTypes.Contains(customerType))
{ }
如果要多次求值,则HashSet将获胜。在应用程序开始时创建一次哈希集。
不要每次都创建哈希集(或列表或数组) 对于较小的数字,一个列表或数组可能会赢,但包含的是O(n),所以响应将随着更长的列表而降低
HashSet.Contains是O(1),所以响应不会随n的增大而降低。为什么要创建列表?
为什么每次都要创建它 HashSet是最快的
private HashSet<CustomerType> CustomerTypes = new HashSet<CustomerType>() {CustomerType.Overseas, CustomerType.Interstate};
if (CustomerTypes.Contains(customerType))
{ }
如果要多次求值,则HashSet将获胜。在应用程序开始时创建一次哈希集。
不要每次都创建哈希集(或列表或数组) 对于较小的数字,一个列表或数组可能会赢,但包含的是O(n),所以响应将随着更长的列表而降低
HashSet.Contains是O(1),因此响应不会随n的增大而降低。不是答案:比较
HashSet
与列表
中包含的-TL;博士首选-HashSet
猜测:List
更简单,因此对于少量项目,它应该比HashSet
快,因此使用newlist{EnumType.Value1,EnumType.Value2}
与HashSet
的代码一样好
现实:包含的列表
比人们预期的要慢得多(与直接迭代数组
相比,后者比哈希集
多达10项),太长了,读不下去了,所以代码< >清单>代码>当代码中的任意个项目为0-2或第一选择时,列表< <代码> >比其他选项小得多(不是答案:<代码> HasStuts<代码> vs>代码>列表<代码> > < <代码> > tl;DR;首选<代码> HasStuts< /C> > /<
猜测:List
更简单,因此对于少量项目,它应该比HashSet
快,因此使用newlist{EnumType.Value1,EnumType.Value2}
与HashSet
的代码一样好
现实:包含用于列表的比人们预期的要慢得多(与直接迭代数组
相比,后者比哈希集
多达10项),因此列表
可以击败哈希集
,当项目数为0-2或列表中的首选项
比其他非常小的选项更常见时(你可以考虑<代码> HasSET 而不是<代码>列表<代码>,但是你的样本有什么错?@ GravtWiNeN:有一个较短的方法吗?@ GravtWiNy:是的,有一个更快的方法。HashSet是一个更快的集合。@ BLAM在验证了我的计时<代码>列表>代码>之后比我最初测量的慢得多,所以<代码>列表 几乎无法与0-2项(代码发布在下面)的哈希集相匹配所以,<代码> HasSET 是更好的选择。像往常一样,永远不要猜测性能数字……谢谢好玩。@ GalthTunnNee两个列表和HASSET都包含了不是LINQ扩展的方法。它们不使用系统。LINQ;您可以考虑<代码> HasStuts<代码>而不是<代码>列表< /C> >,但是您的示例有什么问题?@ GravtTunnNi:I有没有更短的方法?@GrantWinney是的,有更快的方法。HashSet是包含的更快的集合。@在验证我的计时List
后,结果比我最初测量的慢得多,因此List
几乎无法与HashSet
进行0-2项的匹配(下面发布的代码)所以,<代码> Hash SET 是更好的选择。像往常一样,永远不要猜测性能数字……谢谢好玩。@ GalthTunnNee两个列表和HASSET都包含了不是LINQ扩展的方法。它们不使用系统。LINQ;+ 1。考虑从答案中删除问题并将它们转换成语句…@ AlxeILnkkvof使用哈希的部分内容。集合和代码示例并不是一个明确的回答语句?我今天非常不清楚……我的意思是:“为什么要创建列表?”->“使用HashSet,因为它是为此类操作而明确设计的…”“为什么每次都要创建它?”->“除非您需要在一个地方/一次进行比较,否则最好是…”+ 1。考虑将问题从答案中删除,并把它们转换成语句……AlxeILVENKOOF HASSET和代码样例的哪些部分不是一个清晰的回答语句?我今天还不清楚……我的意思是:“为什么要创建一个列表?”->“使用哈希集,因为它是为这些操作而明确设计的……”“为什么会这样?”
Size: List: HashSet(ms):
0, 120, 155
1, 163, 194
2, 203, 189
3, 250, 189
4, 294, 188
5, 332, 188