1

有没有更简洁的方法来检查 x 是“a”、“b”、“c”、“d”还是“e”?

if (x == "a" | x == "b" | x == "c" | x == "d" | x == "e"){//do something}

基本上我想知道是否可以在不重复变量名 x 的情况下表达相同的 if 语句。

4

3 回答 3

5

怎么样:

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))
{
    ...
}
于 2012-08-11T07:21:34.307 回答
1

您可以在“广告”数组上使用Exists 。

new string[]{"a","b",...}.Exists(x)

于 2012-08-11T07:23:36.647 回答
0

假设您只需要检查字符,比较字符的 ascii 代码可以如下所示。

if(x >= 'a' && x <= 'e')
{

}
于 2012-08-11T07:21:37.283 回答