c# - LINQ 返回一个接口(interface)?

标签 c# linq interface

只是浏览 LINQ tutorials on MSDN并遇到以下代码:

IEnumerable<int> numQuery1 = 
            from num in numbers
            where num % 2 == 0
            orderby num
            select num;

我不明白接口(interface)是如何返回的?我的理解是接口(interface)只是类的轮廓,当然不能包含任何数据。

我希望这个能被清理掉。

最佳答案

接口(interface)是关于返回值的契约:Linq 实际上不会告诉您什么它会返回(在实际的类中),但它会保证它的行为类似于 IEnumerable<int> ,即它返回的类实现了这个接口(interface)。它可能是 List<int>WhackyLinqInternalEnumerable<int> - 但你并不真正关心,因为,好吧,你感兴趣的只是界面(你可以用对象做什么)。

可能会让您感到困惑的一件事是变量和它所代表的对象之间的区别:对于(引用)类型,变量只是“指向”对象。你可以有很多变量“指向”同一个对象。它们不需要具有相同的类型,但它们所指向的对象必须与变量具有相同的类型、子类型或(在具有接口(interface)类型的变量的情况下)必须实现相同的变量。

关于c# - LINQ 返回一个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7191315/

相关文章:

c# - 统一,加电碰撞问题

c# - 在 C# 中访问文本框选择的值

c# - 为什么 Linq 在 Nullable<T> 上的连接与 == 的工作方式不同?

interface - typescript 0.9 接口(interface)导出。是否可以?

java - 在java中传递后代而不是接口(interface)

c# - 如何使用 Entity Framework 保存和加载 System.IO.Stream 对象?

c# - 异步加载网络图像

c# - Linq 中的 DateTime.Compare

c# - 使用 LINQ 将新的 BindingList 与主 BindingList 协调

java - 在 C++ 中,我可以像在 Java 中一样拥有接口(interface)变量吗?