GenericFunc中的可选参数我在程序集中有以下方法:publicstringdostuff(stringfoo,objectbar=null){/*...*/}我使用它作为回调函数,因此对它的引用被传递给另一个程序集:Funcdostuff现在在原始形式中,我可以在不指定第二个参数的情况下调用它,第二个参数默认为null。但是当我在第二个程序集中将它用作回调时,我必须指定第二个参数。什么语法允许我省略第二个参数?您需要创建一个只接受一个参数的新方法,并为第二个参数传递一个默认值。您可以使用lambda而不是创建新的命名方法(如果需要)来执行此操作:FuncdoStuffDelegate=s=>dostuff(s);另一种选择是使用其签名具有可选第二个参数的委托,而不是使用Func,在这种情况下,您的方法的签名将匹配:publicdelegatestringFoo(stringfoo,objectbar=null);您可以直接将dostuff分配给Foo类型的委托,并且在调用时您只能在委托时指定一个参数。你不能那样做,因为可选参数是语法糖,只能在直接调用方法时使用。当你调用这样的方法时:dostuff(foo);编译器将其翻译为:dostuff(foo,null);在其他情况下,例如使用不接受可选参数的委托或使用反射调用此方法时,必须提供可选参数。以上就是C#学习教程的全部内容:通用Func中的可选参数。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
