我在我的代码中使用匿名委托调用此示例函数:
public static int TestFunction(int a, int b) {
return a + b;
}
代表看起来像这样:
var del = new Func<int, int, int>(TestFunction);
我的问题是:如何为void
指定TResult
返回类型?以下不起作用:
public static void OtherFunction(int a, string b) { ... }
var del = new Func<int, string, void>(OtherFunction);
答案 0 :(得分:44)
如果没有返回类型,则需要Action<int,string>
:
var del = new Action<int, string>(OtherFunction);
或只是:
Action<int, string> del = OtherFunction;
答案 1 :(得分:7)
你必须使用Action&lt; T>如果你想返回无效。
答案 2 :(得分:3)
你需要行动&lt; T>如果你不想归还某些东西
答案 3 :(得分:0)
如果您不需要任何返回值,请使用Action而不是Func
public void InvokeService<T>(Binding binding, string endpointAddress, Action<T> invokeHandler) where T : class
{
T channel = FactoryManager.CreateChannel<T>(binding, endpointAddress);
ICommunicationObject communicationObject = (ICommunicationObject)channel;
try
{
invokeHandler(channel);
}
finally
{
try
{
if (communicationObject.State != CommunicationState.Faulted)
{
communicationObject.Close();
}
}
catch
{
communicationObject.Abort();
}
}
}