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))
{
...
}
「ad」の配列でExistsを使用できます。
new string[]{"a","b",...}.Exists(x)
文字のみをチェックする必要があると仮定すると、文字のASCIIコードを比較すると、次のようになります。
if(x >= 'a' && x <= 'e')
{
}