C# 将匿名类型组传递给函数

C# 将匿名类型组传递给函数,c#,.net,linq,anonymous-types,C#,.net,Linq,Anonymous Types,我需要将匿名类型索引上的I组传递给函数 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>

我需要将匿名类型索引上的I组传递给函数

 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

        }
现在我需要知道为什么这样做,它是传递这种数据的正确方式吗。我只是凭直觉写的,这可能行得通

我想知道为什么会这样

它之所以有效,是因为这是一个合法的C程序,正如C规范所描述的那样。具体而言,C 4规范第7.5.2节

这是传递此类数据的正确方式吗

我觉得不错

我想知道为什么会这样

它之所以有效,是因为这是一个合法的C程序,正如C规范所描述的那样。具体而言,C 4规范第7.5.2节

这是传递此类数据的正确方式吗


我觉得很好。

谢谢。我想知道为什么它会起作用,因为我不知道类型推断。如果没有类型推断,这样的事情可能发生吗?@Midhat:您不能声明匿名类型的名称,因为它没有名称。因此,无论在何处使用匿名类型,都必须从表达式的类型推断该类型。谢谢。我想知道为什么它会起作用,因为我不知道类型推断。如果没有类型推断,这样的事情可能发生吗?@Midhat:您不能声明匿名类型的名称,因为它没有名称。因此,无论在何处使用匿名类型,都必须从表达式的类型推断出该类型。@SLaks,因为引入了匿名类型,编译器可能会禁止在定义该类型的块之外使用它。Eric可能会给你一个更好的答案,但我认为你是对的,如果类型推断不可用,您会用什么替换“var”?您可能需要使用a、B、C和item=>newstrongtypeitem.a、item.B、item创建一个强类型。C@SLaks,因为引入了匿名类型,编译器可能会禁止在定义它的块之外使用它。Eric可能会给你一个更好的答案,但我认为你是对的,如果类型推断不可用,您会用什么替换“var”?您可能需要使用a、B、C和item=>newstrongtypeitem.a、item.B、item.C创建一个强类型