有没有更简洁的方法来检查 x 是“a”、“b”、“c”、“d”还是“e”?
if (x == "a" | x == "b" | x == "c" | x == "d" | x == "e"){//do something}
基本上我想知道是否可以在不重复变量名 x 的情况下表达相同的 if 语句。
有没有更简洁的方法来检查 x 是“a”、“b”、“c”、“d”还是“e”?
if (x == "a" | x == "b" | x == "c" | x == "d" | x == "e"){//do something}
基本上我想知道是否可以在不重复变量名 x 的情况下表达相同的 if 语句。
怎么样:
string[] whiteList = { "a", "b", "c", "d", "e" };
if(whiteList.Contains(x))
{
...
}
您可以考虑使用HashSet<string>
或类似的并在字段中缓存对它的引用以提高性能(为您提供O(1)
Contains 操作并避免分配、填充集合)。
//Field
HashSet<string> _whiteList = new HashSet<string> { "a", "b", "c", "d", "e" };
....
// In a method:
if(_whiteList.Contains(x))
{
...
}
您可以在“广告”数组上使用Exists 。
new string[]{"a","b",...}.Exists(x)
假设您只需要检查字符,比较字符的 ascii 代码可以如下所示。
if(x >= 'a' && x <= 'e')
{
}