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
不是吗?