相关疑难解决方法(0)

C#中的可选委托

这是两个扩展方法重载的简单示例

public static class Extended 
{
    public static IEnumerable<int> Even(this List<int> numbers)
    {
        return numbers.Where(num=> num % 2 == 0);
    }

    public static IEnumerable<int> Even(this List<int> numbers, Predicate<int> predicate)
    {
        return numbers.Where(num=> num % 2 == 0 && predicate(num));
    }
}
Run Code Online (Sandbox Code Playgroud)

通过将委托设置为可选,我希望能够将它们合并为一个:

public static class Extended 
{
    public static IEnumerable<int> Even(this List<int> numbers, Predicate<in> predicate = alwaysTrue)
    {
        return numbers.Where(num=> num % 2 == 0 && predicate(num));
    }

    public static bool alwaysTrue(int a) { return true; }
}
Run Code Online (Sandbox Code Playgroud)

但是,编译器会抛出错误:

'predicate'的默认参数值必须是编译时常量 …

c# delegates optional-parameters c#-4.0

15
推荐指数
1
解决办法
5945
查看次数

标签 统计

c# ×1

c#-4.0 ×1

delegates ×1

optional-parameters ×1