当前位置: 首页 > 编程语言 > C#

泛型谓词的默认值作为参数分享

时间:2023-04-10 19:23:54 C#

泛型谓词的默认值作为参数第一次问我:)我需要一些方法来使用格式Func定义泛型的默认谓词,然后将其用作默认参数。像这样:publicboolBroadcast(bytecommand,MemoryStreamdata,boolasync,Funcpredicate=(Tt)=>true)当我这样做的时候,我得到了编译错误:'predicate'的默认参数值必须是一个编译是否有一种平滑的方法可以使用我缺少的时间常数来执行此操作,或者我是否应该使谓词函数可为空并相应地更改我的函数逻辑?谢谢,方法参数的默认值必须是编译时常量,因为默认值实际上是由编译器复制到方法的所有调用点。您必须使用重载来执行此操作:publicboolBroadcast(bytecommand,MemoryStreamdata,boolasync){returnBroadcast(command,data,async,t=>true);}publicboolBroadcast(bytecommand,MemoryStreamdata,boolasync,Funcpredicate){//...}此外,您可以使用mscorlib中的特定Predicate委托。它具有与Func相同的签名,但它显式地将其标记为决定是否对T的实例执行操作的委托。有一个Broadcast的重载不采用最后一个参数。试试这个:publicboolBroadcast(bytecommand,MemoryStreamdata,boolasync,Funcpredicate=default(Func))但我认为你必须检查谓词!=空。以上是C#学习教程:泛型谓词的默认值作为参数共享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: