A がこれを持っていることを除いて、互いに同一のコード A と B の 2 つのセクションがあります。
if(x == y)
そしてBはこれを持っています
if(x != y)
ここで、x と y は整数です。
コードの複製を減らしたいので、このコードを別のメソッドに入れたいと思いました。==
問題は、 and!=
演算子をそのようなメソッドに渡して実行するにはどうすればよいかということです。
A がこれを持っていることを除いて、互いに同一のコード A と B の 2 つのセクションがあります。
if(x == y)
そしてBはこれを持っています
if(x != y)
ここで、x と y は整数です。
コードの複製を減らしたいので、このコードを別のメソッドに入れたいと思いました。==
問題は、 and!=
演算子をそのようなメソッドに渡して実行するにはどうすればよいかということです。
ブール値でxorするのが好きですか?
bool negate = true;
...
if ((x == y) ^ negate)
...
整数方程式と不等式の場合、問題を簡単に解決できます。
たぶん次のようにします:
void TheMethod(Func<int, int, bool> criterion)
{
...
if (criterion(x, y))
...
}
TheMethod((x, y) => x == y);
またはで呼び出しますTheMethod((x, y) => x != y);
。
等値または不等値を評価するためのフラグを受け入れるブール関数を使用します。
bool Eval(bool enforceEquality, T x, T y)
{
if(enforceEqality)
return x == y
else
return x != y
}
Eval という名前は多少の作業を使用できますが、この方法ではフラグを外部から渡し、それを使用してどの評価が true を返すかを判断します。