如何在C#匿名类型中声明"Key"字段?

Dan*_*iel 18 c# vb.net anonymous-types

在VB.NET中,我习惯于在创建匿名类型时执行类似的操作(VB.NET匿名类型包括关键字段的概念):

Dim prod1 = New With {
    Key .Name = "paperclips",
    Key .Price = 1.29,
    .OnHand = 423
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法在C#中找到任何方法,因为它似乎Key不支持关键字.

有没有办法在C#中指出我只想在查找相等性时比较匿名类型中的某些字段?

svi*_*ick 18

在C#中没有类似的东西.在C#中,匿名类型的所有属性都是只读的,并参与相等比较.

如果你想在C#中做这样的事情,你需要创建自己的(命名)类型.

  • @TheEvilPenguin是的,确实如此.在这两种情况下,它们都是只读的,用于相等比较. (4认同)
  • 稍微扩展一下:MSDN说自动生成的`Equals`和`GetHashCode`实现使用匿名类型的每个属性.他们使用每种类型的属性来调用它们的`Equals`和`GetHashCode`实现. (3认同)
  • 这是否意味着,有效地,C#中匿名类型的每个属性都与VB.NET Key属性相同? (2认同)