我正在写一个c#代码,我想在一个函数中传递一个参数,它将是这些符号之一<,>,==,!=
private Image ThresholdImageFilter(image, symbol, threshold)
{
for (int i = 1; i < 512; i++)
{
for (int j = 1; j < 512; j++)
{
for (int j = 1; j < 512; j++)
{
if pixel symbol threshold;
{
pixel = 1;
}
else
{
pixel = 0;
}
}
}
}
}
我想多次调用一个函数,但是使用不同的符号,如下所示:
AImage = ThresholdImageFilter(image > threshold);
BImage = ThresholdImageFilter(image < threshold);
CImage = ThresholdImageFilter(image <= threshold);
DImage = ThresholdImageFilter(image >= threshold);
我正在寻找类似的东西:
private Image Filter(Bitmap image, symbolArgument symbol, int threshold)
{
...
}
最后调用这个函数:
BinaryImage = Filter(imageB, >, threshold);
有办法吗?如果是,请建议如何传递&gt; =或&lt; =(包含2个符号)。
答案 0 :(得分:4)
让过滤器接受一个接受两个参数的委托并返回一个布尔值。然后,您可以使用给定的运算符将lambda传递给该参数:
public SomeResult Filter(Func<ArgumentType, ArgumentType, bool> predicate)
{
if(predicate(operand1, operand2))
DoSomething();
}
然后你会这样称呼:
var result = Filter((a,b)=> a > b);