[英]Passing equals and not equals into a function
我有两段代码A和B彼此相同,除了A有这个
if(x == y)
和B有这个
if(x != y)
其中x和y是整数。
我想减少代码的复制,因此希望将此代码放在一个单独的方法中。 问题是如何将==
和!=
运算符传递给这样的方法并执行它?
喜欢xor它与bool?
bool negate = true;
...
if ((x == y) ^ negate)
...
在整数方程和不等式的情况下,它可以轻松解决您的问题。
您可以传递Func<int, int, bool>
private void MyMethod(Func<int, int, bool> checker)
{
if(checker(3, 4))
{
// Do Something.
}
}
也许这样做:
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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.