我在程序集中有以下方法:
public string dostuff(string foo, object bar = null) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
我将它用作回调函数,因此对它的引用会传递给另一个程序集:
Func<string, object, string> dostuff
Run Code Online (Sandbox Code Playgroud)
现在以原始形式,我可以调用它而不指定第二个参数,默认为null.但是当我在第二个程序集中使用它作为回调时,我必须指定第二个参数.
什么语法允许我忽略第二个参数?
Ser*_*rvy 10
您需要创建一个只接受一个参数的新方法,并传递第二个参数的默认值.您可以使用lambda执行此操作,而不是创建新的命名方法(如果需要):
Func<string, string> doStuffDelegate = s => dostuff(s);
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用一个委托,其签名具有可选的第二个参数,而不是使用Func,在这种情况下,您的方法的签名将匹配:
public delegate string Foo(string foo, object bar = null);
Run Code Online (Sandbox Code Playgroud)
您可以直接分配dostuff给类型的委托Foo,并且在调用该委托时您只能指定一个参数.
| 归档时间: |
|
| 查看次数: |
5630 次 |
| 最近记录: |