这个新的缩写是什么

本文关键字:缩写 是什么 | 更新日期: 2023-09-27 18:21:41

我似乎找不到任何关于new[]应该是什么的文档

var json = new[] {
            new object[] {"20-Jun-2008", 200 },
            new object[] {"20-Jun-2009", 250 }
        };

这个新的缩写是什么

这些是隐式类型数组

参见C#3.0规范。

数组创建表达式的语法(§7.5.10.2)扩展到支持隐式类型的数组创建表达式:数组创建表达式:。。。new [ ] array-initializer

在隐式类型的数组创建表达式中从数组中指定的元素推断数组实例初始化器。具体来说,由数组初始值设定项中的表达式必须恰好包含一个类型集合中的每个类型都是隐式可转换的,如果该类型不是null类型,则会创建该类型的数组。如果正好一个无法推断类型,或者如果推断的类型为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

最后一个表达式导致编译时错误,因为intnor字符串不能隐式转换为另一个字符串。显式类型化例如,在这种情况下必须使用数组创建表达式指定要成为object[]的类型。或者,其中一个元素可以强制转换为通用基类型,然后该基类型将成为推断的元素类型。

隐式类型的数组创建表达式可以与用于创建匿名类型数据的匿名对象初始化程序结构。例如:

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关键字一样。

它是隐式类型。由于该集合中的所有元素都是object数组,编译器可以推断出数组本身必须是object数组的集合。