C# 什么';新对象[]{}和新对象[]{}之间的区别是什么?
有时,当传递任意对象数组(如传递给激活器)时,我会看到以下符号:C# 什么';新对象[]{}和新对象[]{}之间的区别是什么?,c#,C#,有时,当传递任意对象数组(如传递给激活器)时,我会看到以下符号: new [] {5, "Five"} 在其他情况下,似乎需要一个命名的对象字典,我看到: new {Numeric = 5, Textual = "Five"} 第二个表达式创建的数组究竟是什么 第二个声明看起来像匿名类型,但不会编译。似乎您希望拥有匿名对象数组,您可以这样创建: var anonArray = new[] { new { Numeric = 5, Textual = "Five" },
new [] {5, "Five"}
在其他情况下,似乎需要一个命名的对象字典,我看到:
new {Numeric = 5, Textual = "Five"}
第二个表达式创建的数组究竟是什么 第二个声明看起来像匿名类型,但不会编译。似乎您希望拥有匿名对象数组,您可以这样创建:
var anonArray = new[] { new { Numeric = 5, Textual = "Five" },
new { Numeric = 6, Textual = "Six" }};
:
匿名类型提供了一种封装一组
将只读属性转换为单个对象,而无需显式
首先定义一个类型。类型名由编译器生成,并且是
在源代码级别不可用。每个属性的类型为
由编译器推断
第二个声明看起来像匿名类型,但不会编译。似乎您希望拥有匿名对象数组,您可以这样创建:
var anonArray = new[] { new { Numeric = 5, Textual = "Five" },
new { Numeric = 6, Textual = "Six" }};
:
匿名类型提供了一种封装一组
将只读属性转换为单个对象,而无需显式
首先定义一个类型。类型名由编译器生成,并且是
在源代码级别不可用。每个属性的类型为
由编译器推断
第一个代码生成一个对象数组
第二段代码实际上并没有编译。如果您的意思是
new[]{new{Numeric=5,text=“Five”}
,那么它是一个匿名类型的数组,但您应该澄清。第一个代码生成一个对象数组
第二段代码实际上并没有编译。如果您的意思是
new[]{new{Numeric=5,text=“Five”}
,那么它是一个匿名类型的数组,但是您应该澄清一下。第一个示例是创建一个object
类型的数组,并在其中放入一个整数和一个字符串
第二个示例是创建匿名类型的数组(大小为1)。(当没有为数组提供类型(
new[]
)时,它将尝试根据数组初始化中所有元素通用的最派生类型推断应使用的类型。)new{Numeric=5,text=“Five”}
正在创建一个具有两个属性的新匿名类型,int
类型的Numeric
(该类型根据分配给它的内容进行推断),值为5
,属性为text
,类型为string
,值为“五”
第一个示例是创建一个类型为object
的数组,并在其中放入一个整数和一个字符串
第二个示例是创建匿名类型的数组(大小为1)。(当没有为数组提供类型(
new[]
)时,它将尝试根据数组初始化中所有元素通用的最派生类型推断应使用的类型。)new{Numeric=5,text=“Five”}
正在创建一个具有两个属性的新匿名类型,int
类型的Numeric
(该类型是根据分配给它的内容推断出来的),值为5
,属性为text
,类型为string
,值为“五”
,第一个示例是对象的数组。它包含两个对象:一个int
5
和一个string
“五”
。第二个是匿名类型的数组。它包含一个对象。一个对象有两个属性,int Numeric
的值为5
,和string text
的值为“五”
第二个更显式,类型更安全,但是是匿名类型,在本地上下文之外没有用处;第一种方法在某些情况下可能很有用,例如通过反射将参数传递给方法。第一个示例是对象的数组。它包含两个对象:一个int
5
和一个string
“五”
。第二个是匿名类型的数组。它包含一个对象。一个对象有两个属性,int Numeric
的值为5
,和string text
的值为“五”
第二个更显式,类型更安全,但是是匿名类型,在本地上下文之外没有用处;第一个在某些情况下可能很有用,例如,通过反射将参数传递给方法。第二个不是实际上是包含一个匿名类型元素的数组吗?@ThorstenDittmar第二个示例不编译;这不是匿名类型数组的正确语法。你需要两套花括号和另一套新的。是的,谢谢你的回答。尽管如此,我还是编辑了我的答案,添加了正确的匿名类型声明。第二个示例不是包含一个匿名类型元素的数组吗?@ThorstenDittmar第二个示例没有编译;这不是匿名类型数组的正确语法。你需要两套花括号和另一套新的。是的,谢谢你的回答。尽管如此,我还是编辑了答案,添加了正确的匿名类型声明。第二个示例无效。它不是匿名类型的正确语法,也不是数组声明的正确语法。没有有效的代码,我们无法说出它所指的内容。第二个示例无效。它不是匿名类型的正确语法,也不是数组声明的正确语法。没有有效的代码,我们无法说出它所指的内容。