gpt4 book ai didi

c# Linq 的 - GroupedEnumerable 用法?

转载 作者:行者123 更新时间:2023-11-30 14:15:12 28 4
gpt4 key购买 nike

 Fruit[] data = new[] {
new Fruit {Name = "Gala",Type = "Apple",Price = 0.75m,Quantity = 10},
new Fruit {Name = "Granny Smith",Type = "Apple",Price = 0.80m,Quantity = 7},
new Fruit {Name = "Tasty",Type = "Strawberries",Price = 1.90m,Quantity = 20}
};

var grouped = from fruit in data
group fruit by fruit.Type;

grouped类型是:System.Linq.GroupedEnumerable<ConsoleApplication15.Fruit,string,ConsoleApplication15.Fruit>

看看它:enter image description here

我的问题:

如果分组包含项目(实现 ienumerable)- 为什么它的类型是 GroupedEnumerable

并且不是

IEnumerable <System.Linq.IGrouping<string,ConsoleApplication15.Fruit>>

他们为什么要创建一个新类型又名 GroupedEnumerable

最佳答案

如果您在 .Net 中有一个对象,它必须是某种具体类型,它不能是一个接口(interface)。因此,例如 new IList<int>()无效,您必须执行类似 new List<int>() 的操作.

如果你有一个变量,它的类型可以是一个接口(interface),所以你可以这样写,例如IList<int> list = new List<int>() .

这正是这里发生的事情。 变量的类型 groupedIEnumerable<IGrouping<string,Fruit>> (尽管从代码中看不清楚,因为您使用的是 var )。该变量引用的对象 的类型是GroupedEnumerable<Fruit, string, Fruit> ,这是 GroupBy() 的实现使用的内部类型.不可能是IEnumerable ,因为您不能拥有接口(interface)的实例。

Visual Studio 调试器向您显示对象的运行时类型,因为这就是调试器的用途:向您显示运行时信息。

关于c# Linq 的 - GroupedEnumerable 用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10461882/

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