将lambda表达式转换为Func <iobserver <char>,IDisposable&gt; </iobserver <char>

时间:2013-07-30 08:27:46

标签: c# casting lambda idisposable

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

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

1 个答案:

答案 0 :(得分:3)

正如@Patryk所说,这基本上与询问相同:&#34;为什么这可以说它返回int,当它没有? &#34;:

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

回答;它不会在任何代码路径中返回不同的(另一种类型,或void) - 所以肯定,为什么不呢?编译器可以将其表示为返回int的方法。