gpt4 book ai didi

c# - IObservable 使用 linq 查询

转载 作者:太空宇宙 更新时间:2023-11-03 18:31:21 24 4
gpt4 key购买 nike

为什么是IObservable<T>不是 IEnumerable<T> 的实现和 IQueryable<T> ,但我可以使用 LINQ 查询吗?是IObservable特殊类型 ?

我以前认为只有 Linq 查询 IEnumerable 或 IQueryable ,但事实并非如此。以下代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rx_Test1
{
public static class IMyClassExtension
{

public static MyClass<TResult> Select<TSource, TResult>(this MyClass<TSource> source, Func<TSource, int, TResult> selector)
{
return null;
}

public static MyClass<TResult> Select<TSource, TResult>(this MyClass<TSource> source, Func<TSource, TResult> selector)
{
return null;
}

}
public class MyClass<T>
{

}
class Program
{
static void Main(string[] args)
{
var myclass = new MyClass<int>();
var q = from m in myclass
select m;
}
}
}

最佳答案

LINQ 查询理解适用于任何实现相应 Select/Where/etc 的东西。编译器可以转换成的方法。它不限于特定的接口(interface)。这类似于您如何对未实现 IEnumerable 但包含 GetEnumerator 和 MoveNext/Current 方法的对象进行 foreach。实际上,LINQ 表达式是由编译器 duck 类型化的。这也解释了为什么您可以在 IObservable 上使用一些 LINQ 表达式而不是全部(有意排除 orderby)。

关于c# - IObservable<T> 使用 linq 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21938527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com