【发布时间】:2015-08-20 11:04:18
【问题描述】:
我有一个函数:
private static Response WaitForAPIReply(Func<Response> f)
{
while (true)
{
var response = f();
if (response.MISSING == "WAIT")
{
Console.WriteLine("WAIT");
Thread.Sleep(TimeSpan.FromSeconds(0.1));
}
else
{
return response;
}
}
}
我称WaitForAPIReply为:
private static Response GetTestData(int a, string b)
{
return WaitForAPIReply(() => GetData(a, b));
}
我想在GetData 中添加一个out 参数并在WaitForAPIReply 函数中使用它。但是我无法为此修改WaitForAPIReply?
我在网上搜索可以看到我可以使用委托。但是当作为参数传递给WaitForAPIReply时我无法解决这个问题
【问题讨论】:
-
所以你想让
WaitForAPIReply也有一个out参数吗?那你想叫它WaitForAPIReply((out YourType o) => GetData(a, b, out o), out c);,还是什么?不清楚你的问题是什么?也许你想像private static Response WaitForAPIReply(YourOutFunc<YourType, Response> f, out YourType yt) { ... }一样声明它。请指出您的问题所在。 -
@Jeppe,问题是我想在“WaitForAPIReply”函数中使用“GetData”的“out”参数中接收到的数据
-
试试我在第一条评论中写的。您必须定义自己的“func”委托类型。它是这样的:
namespace YourSpace { delegate TResult YourOutFunc<TOut, out TResult>(out TOut o); },您可以将其放入一个新文件YourOutFunc.cs。祝你好运。
标签: c#