gpt4 book ai didi

c# - 通用谓词的默认值作为参数

转载 作者:IT王子 更新时间:2023-10-29 04:34:19 24 4
gpt4 key购买 nike

第一次问我:)

我需要一些方法来使用格式上的泛型来定义默认谓词

Func<T, bool>

然后将其用作默认参数。像这样:

public bool Broadcast(byte command, MemoryStream data, bool async, Func<T, bool> predicate = (T t) => true)

当我这样做时,我得到了编译错误:

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

是否有一种我缺少的流畅的方法来执行此操作,或者是否应该使谓词函数可为空并相应地更改我的函数逻辑?

谢谢,

最佳答案

方法参数的默认值必须是编译时常量,因为默认值实际上是由编译器复制到方法的所有调用点。

您必须使用重载来执行此操作:

public bool Broadcast(byte command, MemoryStream data, bool async) {
return Broadcast(command, data, async, t => true);
}

public bool Broadcast(byte command, MemoryStream data, bool async, Func<T, bool> predicate) {
// ...
}

此外,还有一个特定的 Predicate<T>在 mscorlib 中委托(delegate),您可以改用它。它与 Func<T, bool> 的签名相同, 但它明确地将其标记为委托(delegate),决定是否对 T 的实例执行操作

关于c# - 通用谓词的默认值作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804536/

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