传递匿名类型分组给函数

3

我需要将一个匿名类型索引的 IGrouping 传递给一个函数。

 List<DataClass> sampleList = new List<DataClass>();
 var groups = sampleList.GroupBy(item => new { item.A, item.B, item.C }); 

我需要用一个函数来处理每个组。所以我写了这个函数,它可以正常工作。
static void ProcessGroup<T>(IGrouping<T, DataClass> group)
        { 
        //consume group

        }

现在我需要知道这为什么有效,以及这种传递数据的方式是否正确。我只是凭直觉写下它,认为这可能有效。


@SLaks,因为引入了匿名类型,编译器可以禁止在定义它的块之外使用它。 - vc 74
Eric可能会给你一个更好的答案,但我认为你是对的。如果没有类型推断,你会用什么来替换'var'?你可能需要创建一个强类型,包括A、B、C和item => new StrongType(item.A, item.B, item.C)。 - vc 74
1个回答

6

我需要知道为什么这个程序能够工作

它能够工作是因为该程序符合C#规范,具体来说,符合C# 4规范的第7.5.2节。

这种数据传递方式是否正确?

看起来没问题。


谢谢。我想知道为什么它能工作,因为我不知道类型推断。如果没有类型推断,这样的事情是否可能? - Midhat
@Midhat:你不能给匿名类型命名,因为它没有名称。因此,在使用匿名类型的任何地方,类型必须从表达式的类型中推断出来。 - Eric Lippert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接