在VB.NET中,当创建匿名类型时,我习惯这样做(VB.NET匿名类型包括关键字段的概念):
Dim prod1 = New With {
Key .Name = "paperclips",
Key .Price = 1.29,
.OnHand = 423
}
然而,我在C#中找不到任何方法来实现这一点,因为似乎不支持Key
关键字。
在C#中,是否有任何方法可以表示我只想比较匿名类型中的某些字段以便查找相等性?
在VB.NET中,当创建匿名类型时,我习惯这样做(VB.NET匿名类型包括关键字段的概念):
Dim prod1 = New With {
Key .Name = "paperclips",
Key .Price = 1.29,
.OnHand = 423
}
然而,我在C#中找不到任何方法来实现这一点,因为似乎不支持Key
关键字。
在C#中,是否有任何方法可以表示我只想比较匿名类型中的某些字段以便查找相等性?
C#中没有类似的东西。在C#中,匿名类型的所有属性都是只读的,并参与相等性比较。
如果您想在C#中实现类似的功能,则需要创建自己的(命名)类型。
Equals
和 GetHashCode
实现会使用匿名类型的每个属性。它们使用每个属性的类型来调用其 Equals
和 GetHashCode
的实现。 - Simon Whitehead