C#中的动态语法

Eel*_*Fan 20 c#

最近,我遇到了使用如下语法的C#示例:

var result = new { prop1 = "hello", prop2 = "world", prop3 = "." };
Run Code Online (Sandbox Code Playgroud)

我很喜欢.它看起来像JSON.但是,我不知道这个语法叫什么.出于这个原因,我不确定如何更多地了解它.我真的很想知道如何在结果中定义对象数组.例如,如果我想返回prop3的项目数组怎么办?那会是什么样的?这个语法叫什么?

Joh*_*ner 25

这在C#中称为匿名类型.

要返回一个数组,您可以简单地内联它:

var result = new { prop1 = "hello", prop2 = "world", prop3 = new int[] {1,2,3} };
Run Code Online (Sandbox Code Playgroud)

或者事先声明并使用它:

int[] array = new int[] {1,2,3};
var result = new { prop1 = "hello", prop2 = "world", prop3 = array};
Run Code Online (Sandbox Code Playgroud)

  • +1.就此而言,使用内联语法,您可以说`prop3 = new [] {1,2,3}`并让编译器推断出数组类型. (2认同)

jor*_*hmv 6

它被称为匿名类型.要在prop3中返回一个对象数组,你会写

var result = new { prop1 = "hello", prop2 = "world", prop3 = new[] { "h", "e", "l", "l", "o" } };
Run Code Online (Sandbox Code Playgroud)

我正在使用字符串,但对于任何类型的对象都是相同的:

var result = new { prop1 = "hello", prop2 = "world", prop3 = new[] { new YourType(), new YourType(), new YourType() } };
Run Code Online (Sandbox Code Playgroud)

请注意,数组声明中不需要数组中对象的类型; 你不需要编写new YourType[],编译器不需要它,IMO只是简单地使用它new[]