如何将其他参数传递给谓词函数?

时间:2010-08-20 11:50:15

标签: c# sorting parameters predicate parameter-passing

我可以将其他参数传递给谓词函数吗?

我实际上在分拣过程中需要它。

public void Sort(
    Comparison<T> comparison
)

我想在此表单中使用Comparison谓词:

public delegate int Comparison<T>(
    T x,
    T y,
    object extraParameter
)

这可能吗?

2 个答案:

答案 0 :(得分:5)

不,但你可以这样做:

public Comparison<T> MakeComparison<T>(object extraParameter)
{
    return
        delegate(T x, T y) 
        {
            // do comparison with x, y and extraParameter
        }
}

答案 1 :(得分:3)

简单捕获声明谓词时所需的变量。例如:

int i = 0, j = 10;

array.Sort(x => x > i && x < j ? 1 : -1);