Cri*_*cia 12 c# lambda action func
我有一个参数方法,它Func作为一个参数
SomeType SomeMethod<T>( Func<T, T> f ) {...}
Run Code Online (Sandbox Code Playgroud)
我想传递一个,Action而不必重载该方法.但是这就解决了这个问题,你如何代表和Action作为一个Func?我试过了
Func<void, void>
Run Code Online (Sandbox Code Playgroud)
但它无效.
Lee*_*Lee 11
您可以创建一个扩展方法来包装操作并返回一个虚拟值:
public static class ActionExtensions
{
public static Func<T, T> ToFunc<T>(this Action<T> act)
{
return a => { act(a); return default(T) /*or a*/; };
}
}
Action<?> act = ...;
SomeMethod(act.ToFunc());
Run Code Online (Sandbox Code Playgroud)
如果您创建自己的Unit类型而不是使用object并返回null ,则可能更清楚.
你不能把 anAction变成 a Func。但是您可以将对 的调用包装Action在Func. 例如,类似:
Action a = new Action<Foo>(f => { whatever });
Foo myFoo = ...;
Foo result = SomeMethod(new Func<Foo, Foo>(f => { a(myFoo); return myFoo; }));
Run Code Online (Sandbox Code Playgroud)
(目前还没有安装 Visual Studio,但我想您已经明白了。)
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |