gpt4 book ai didi

c# - C# 中的可选委托(delegate)

转载 作者:可可西里 更新时间:2023-11-01 07:43:54 24 4
gpt4 key购买 nike

<分区>

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

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));
}
}

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

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; }
}

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

Default parameter value for 'predicate' must be a compile-time constant

我不明白我的 alwaysTrue 函数为什么不是常量,但是嘿,编译器知道得更多:)

有没有办法让委托(delegate)参数可选?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com