4

我在 Programming C# 5.0 中阅读了以下示例。为什么可以将此 lambda 表达式转换为Func<IObserver<char>, IDisposable>不返回 IDisposable 的时间。

IObservable<char> singularHotSource = Observable.Create(
    (Func<IObserver<char>, IDisposable>)(obs =>
    {
        while (true)
        {
            obs.OnNext(Console.ReadKey(true).KeyChar);
        }
    }));
4

1 回答 1

3

正如@Patryk 所指出的,这基本上与问:“为什么允许这样说它返回int,而它没有返回?”:

    int SomeMethod()
    {
        while (true) { }
    }

并通过回答;在任何代码路径中,它都不会返回不同的东西(另一种类型,或void)——当然,为什么不呢?编译器可以将其表示为返回的方法int

于 2013-07-30T08:41:03.360 回答