最近,我遇到了使用如下语法的 C# 示例:
var result = new { prop1 = "hello", prop2 = "world", prop3 = "." };
我很喜欢。它看起来有点像 JSON。但是,我不知道这种语法叫什么。出于这个原因,我不确定如何进一步了解它。我真的很想弄清楚如何在结果中定义对象数组。例如,如果我想为 prop3 返回一个项目数组怎么办?那会是什么样子?这种语法叫什么?
最近,我遇到了使用如下语法的 C# 示例:
var result = new { prop1 = "hello", prop2 = "world", prop3 = "." };
我很喜欢。它看起来有点像 JSON。但是,我不知道这种语法叫什么。出于这个原因,我不确定如何进一步了解它。我真的很想弄清楚如何在结果中定义对象数组。例如,如果我想为 prop3 返回一个项目数组怎么办?那会是什么样子?这种语法叫什么?
这在 C# 中称为匿名类型。
要返回一个数组,您可以简单地内联它:
var result = new { prop1 = "hello", prop2 = "world", prop3 = new int[] {1,2,3} };
或者事先声明并使用它:
int[] array = new int[] {1,2,3};
var result = new { prop1 = "hello", prop2 = "world", prop3 = array};
它被称为匿名类型。要返回 prop3 中的对象数组,您可以编写
var result = new { prop1 = "hello", prop2 = "world", prop3 = new[] { "h", "e", "l", "l", "o" } };
我正在使用字符串,但对于任何类型的对象都是相同的:
var result = new { prop1 = "hello", prop2 = "world", prop3 = new[] { new YourType(), new YourType(), new YourType() } };
请注意,数组中对象的类型在数组的声明中不是必需的;你不需要写new YourType[]
,编译器不需要它,而且 IMO 简单地使用它更干净new[]
这些是对象和集合初始化器。请参阅http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx。
以下代码是使用对象初始化器的匿名类型示例
var result = new { prop1 = "hello", prop2 = "world", prop3 = "." };
有关更多信息,请参阅匿名类型(C# 编程指南)和对象和集合初始化器(C# 编程指南)