是否可以声明不带参数的通用委托?
我有......
Func<string> del2 = new Func<string>(MyMethod);
而且我真的很想做......
Func<> del2 = new Func<>(MyMethod);
所以回调方法的返回类型是void。使用泛型类型 func 可以吗?
I have...
Func<string> del2 = new Func<string>(MyMethod);
and I really want to do..
Func<> del2 = new Func<>(MyMethod);
so the return type of the callback method is void. Is this possible using the generic type func?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
Func
系列委托适用于采用零个或多个参数并返回值的方法。对于采用零个或多个参数且不返回值的方法,请使用Action
委托之一。如果该方法没有参数,请使用非通用版本的操作
:The
Func
family of delegates is for methods that take zero or more parameters and return a value. For methods that take zero or more parameters an don't return a value use one of theAction
delegates. If the method has no parameters, use the non-generic version ofAction
:是的,返回 void(无值)的函数是一个
Action
希望这有帮助
Yes a function returning void (no value) is a
Action
hope this helps
使用操作委托类型。
Use Action delegate type.
如果您“被迫”使用
Func
,例如在您想要重用的内部通用 API 中,您可以将其定义为new Func
In cases where you're 'forced' to use
Func<T>
, e.g. in an internal generic API which you want to reuse, you can just define it asnew Func<object>(() => { SomeStuff(); return null; });
.以下是使用 Lambda 表达式而不是 Action/Func 委托的代码示例。
Here is a code example using Lambda expressions instead of Action/Func delegates.