c#带括号的匿名类型声明

c#带括号的匿名类型声明,c#,C#,在本例中,有一个变量声明,我以前没有见过,也不知道它是什么: var jh=(名字:“朱庇特”,姓氏:“哈蒙”,出生日期:1711年,出版日期:1761年) C#中有,但它使用花括号 jh.GetType()返回 System.ValueTuple 4[System.String,System.String,System.Int32,System.Int32] 但是ValueTuple泛型不是键值对。他们有一些东西。这种语法更像是命名字段的字典 我的问题是这个语法叫什么?我正在寻找Microso

在本例中,有一个变量声明,我以前没有见过,也不知道它是什么:

var jh=(名字:“朱庇特”,姓氏:“哈蒙”,出生日期:1711年,出版日期:1761年)

C#中有,但它使用花括号

jh.GetType()
返回

System.ValueTuple 4[System.String,System.String,System.Int32,System.Int32]

但是
ValueTuple
泛型不是键值对。他们有一些东西。这种语法更像是命名字段的字典


我的问题是这个语法叫什么?我正在寻找Microsoft文档页面,以获取有关此语法的文档和详细信息。

如您所述,这是
ValueTuple
。您可以查看“序号”元组的一些描述和比较。官方文件也可提供

您展示的代码只是这样一个ValueTuple的典型声明。这种语法是在C#7.0中引入的

要替换
var
,可以使用以下命令:

(string firstName, string lastName, int born, int published) jh = (firstName: "Jupiter", lastName: "Hammon", born: 1711, published: 1761);

这是一个,类型告诉你你可以在谷歌上搜索到。你阅读和引用文档是很好的,但是你应该使用相同的资源来了解
System.ValueTuple
是什么。你在这里问了3个问题。1) 这个代码是做什么的?2) 这种技术叫什么?3) 如何用显式类型替换var?有关第1条和第2条,请参见和。对于#3,您需要澄清“显式类型”需要什么。您是指您创建的某种类型,您希望使用此语法构造它吗?或者你只是想知道实际创建了什么类型?你能解释一下
(string firstName,string lastName,int born,int published)jh=(firs…
System.ValueTuple jh=(firstName:“Jupiter”,lastName:“Hammon”,born:1711,published:1761);
的主要优点是
(字符串名,…)jh=
语法您将获得带有命名字段的元组,因此您将能够引用成员为
jh.firstName
。如果您声明为
ValueTuple jh
,您将只能使用默认名称,如
jh.Item1
。是的,在内部,两个记录完全相同-编译器将用
ValueTuple
语法。请注意,名称是可选的,不需要将名称放在两侧。正如@DavidG提到的,这是
元组类型
,需要
系统。ValueTuple
如中所述。