函数输入参数的符号参数

时间:2014-02-11 18:37:32

标签: c# arguments symbols

我正在写一个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个符号)。

1 个答案:

答案 0 :(得分:4)

让过滤器接受一个接受两个参数的委托并返回一个布尔值。然后,您可以使用给定的运算符将lambda传递给该参数:

public SomeResult Filter(Func<ArgumentType, ArgumentType, bool> predicate)
{
    if(predicate(operand1, operand2))
        DoSomething();
}

然后你会这样称呼:

var result = Filter((a,b)=> a > b);