C# 这个新的缩写是什么?
我似乎找不到任何关于新[]应该是什么的文档。从下面的示例来看,它似乎是一个对象数组速记C# 这个新的缩写是什么?,c#,new-operator,C#,New Operator,我似乎找不到任何关于新[]应该是什么的文档。从下面的示例来看,它似乎是一个对象数组速记 var json = new[] { new object[] {"20-Jun-2008", 200 }, new object[] {"20-Jun-2009", 250 } }; 符号是一种声明 在您的例子中,它是一个对象数组的数组。这些数组是隐式类型的数组 看 数组创建表达式(§7.5.10.2)的语法扩展为 支持隐式类型的数组创建表达
var json = new[] {
new object[] {"20-Jun-2008", 200 },
new object[] {"20-Jun-2009", 250 }
};
符号是一种声明
在您的例子中,它是一个对象数组的数组。这些数组是隐式类型的数组 看 数组创建表达式(§7.5.10.2)的语法扩展为 支持隐式类型的数组创建表达式: 数组创建表达式:<代码>新[]数组初始值设定项 在隐式类型化数组创建表达式中 数组实例是从数组中指定的元素推断出来的 初始化器。具体来说,由 数组初始值设定项中的表达式必须正好包含一种类型 集合中的每个类型都是隐式可转换的,如果该类型 如果不是空类型,则将创建该类型的数组。如果正好是一个 无法推断类型,或者如果推断的类型为null类型,则 发生编译时错误 以下是隐式类型数组创建的示例 表达方式:
var a = new[] { 1, 10, 100, 1000 }; // int[]
var b = new[] { 1, 1.5, 2, 2.5 }; // double[]
var c = new[] { "hello", null, "world" }; // string[]
var d = new[] { 1, "one", 2, "two" }; // Error
最后一个表达式导致编译时错误,因为int和
nor字符串可隐式转换为另一个字符串。显式类型的
例如,在这种情况下必须使用数组创建表达式
将类型指定为对象[]。或者,其中一个元素
可以强制转换为公共基类型,该基类型将成为
推断的元素类型
隐式类型数组创建表达式可以与
用于创建匿名类型数据的匿名对象初始值设定项
结构。例如:
var contacts = new[] {
new {
Name = "Chris Smith",
PhoneNumbers = new[] { "206-555-0101", "425-882-8080" }
},
new {
Name = "Bob Harris",
PhoneNumbers = new[] { "650-555-0199" }
}
};
这意味着new[]是隐式类型的数组。因为它是隐式类型的,所以必须像本例中那样为它分配一些内容。正如您必须使用
var
关键字一样。它是隐式类型。由于该集合中的所有元素都是对象
数组,编译器可以推断数组本身必须是对象
数组的集合。您不能检查“json”的类型以查看返回的内容吗?它是如何匿名的,类型对象[]
的变量json
不是吗?