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

「ad」の配列で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 に答える