3

A がこれを持っていることを除いて、互いに同一のコード A と B の 2 つのセクションがあります。

if(x == y)

そしてBはこれを持っています

if(x != y)

ここで、x と y は整数です。

コードの複製を減らしたいので、このコードを別のメソッドに入れたいと思いました。==問題は、 and!=演算子をそのようなメソッドに渡して実行するにはどうすればよいかということです。

4

4 に答える 4

14

ブール値でxorするのが好きですか?

bool negate = true;
...
if ((x == y) ^ negate)
  ...

整数方程式と不等式の場合、問題を簡単に解決できます。

于 2013-05-17T12:50:18.077 に答える
1

たぶん次のようにします:

void TheMethod(Func<int, int, bool> criterion)
{
  ...

  if (criterion(x, y))

  ...
}

TheMethod((x, y) => x == y);またはで呼び出しますTheMethod((x, y) => x != y);

于 2013-05-17T12:53:37.243 に答える
1

等値または不等値を評価するためのフラグを受け入れるブール関数を使用します。

bool Eval(bool enforceEquality, T x, T y)
{
   if(enforceEqality)
      return x == y
   else 
      return x != y
}

Eval という名前は多少の作業を使用できますが、この方法ではフラグを外部から渡し、それを使用してどの評価が true を返すかを判断します。

于 2013-05-17T12:53:44.883 に答える