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

问题描述 投票:6回答:2

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

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

public void Sort(
    Comparison<T> comparison
)

在哪里我想以这种形式使用Comparison谓词:

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

这可能吗?

c# sorting parameters predicate parameter-passing
2个回答
5
投票

不,但你可以这样做:

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

3
投票

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

int i = 0, j = 10;

array.Sort(x => x > i && x < j ? 1 : -1);
© www.soinside.com 2019 - 2024. All rights reserved.