Bak*_*ery 21 c# arguments predicate default-value
第一次问我:)
我需要一些方法来定义使用格式的泛型的默认谓词
Func<T, bool>
然后将其用作默认参数.像这样的东西:
public bool Broadcast(byte command, MemoryStream data, bool async, Func<T, bool> predicate = (T t) => true)
当我这样做时,我得到编译错误:
'predicate'的默认参数值必须是编译时常量
有没有一种顺利的方法可以做到这一点,我缺少或应该使谓词函数可以为空并相应地改变我的函数逻辑?
谢谢,
the*_*oop 26
方法参数的默认值必须是编译时常量,因为默认值实际上是由编译器复制到方法的所有调用站点.
您必须使用重载来执行此操作:
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中有一个特定的委托,您可以使用它.它与签名相同Func<T, bool>,但它明确地将其标记为委托,该委托决定是否对其实例执行操作T
| 归档时间: | 
 | 
| 查看次数: | 9584 次 | 
| 最近记录: |