小编ich*_*hen的帖子

"x => {throw ..}"的Lambda推断为在重载方法中匹配Func <T,Task>?

我不明白为什么C#最终在以下LINQPad代码中执行不正确的扩展方法:

void Main()
{
    // Actual: Sync Action
    "Expected: Sync Action".Run(x => { x.Dump(); });

    // Actual: Async Task
    "Expected: Async Task".Run(async x => { await System.Threading.Tasks.Task.Run(() => x.Dump()); });

    // Actual: Async Task!!
    "Expected: Sync Action".Run(x => { throw new Exception("Meh"); });
}

static class Extensions
{
    public static void Run<T>(this T instance, Action<T> action)
    {
        "Actual: Sync Action".Dump();
        action(instance);
    }

    public static void Run<T>(this T instance, Func<T, System.Threading.Tasks.Task> func)
    {
        "Actual: Async Task".Dump();
        func(instance).Wait();
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么编译器认为lambda在这里返回一个Task?

我希望在第三次调用Run()时看到"Actual:Sync …

.net c# lambda overloading type-inference

5
推荐指数
1
解决办法
410
查看次数

在iOS上使用YouTube直播

我已经使用iOS YouTube帮助程序iOS上成功传输了普通的 YouTube视频,但实时流似乎不起作用.

我不确定是否支持直播,但我在他们的文档中找不到它.

知道如何让它在iOS上运行(不破坏ToS)吗?

youtube youtube-api ios youtube-livestreaming-api ytplayerview

5
推荐指数
1
解决办法
1247
查看次数