如何在C#匿名类型中声明“关键”字段?

18

在VB.NET中,当创建匿名类型时,我习惯这样做(VB.NET匿名类型包括关键字段的概念):

Dim prod1 = New With {
    Key .Name = "paperclips",
    Key .Price = 1.29,
    .OnHand = 423
}

然而,我在C#中找不到任何方法来实现这一点,因为似乎不支持Key关键字。

在C#中,是否有任何方法可以表示我只想比较匿名类型中的某些字段以便查找相等性?


4
我总是对C#和VB之间的细微差别感到惊讶。我肯定不知道你可以在VB中这样做。 - svick
2个回答

18

3
稍作扩展:MSDN 表示,自动生成的 EqualsGetHashCode 实现会使用匿名类型的每个属性。它们使用每个属性的类型来调用其 EqualsGetHashCode 的实现。 - Simon Whitehead
1
很遗憾C#中没有这样一个方便的功能。虽然可能不值得一提,但我在uservoice论坛上创建了一个建议,希望能够实现这个功能请求。链接 - Daniel
2
这是否意味着,在C#中,匿名类型的每个属性实际上都与VB.NET的Key属性相同? - TheEvilPenguin
4
是的,两种情况下都是只读的,并被用于相等比较。 - svick

3
在C#中没有Key的等效项。

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