没有显式指定数据类型的新数组

时间:2016-09-02 14:48:18

标签: c#

我在查看EF的文档时看到了这种语法:

DropIndex("dbo.MyTable", new[]{"MyColumName"});

在弄清楚它只是new string[]{"MyColumName"}的简写之前,我感到困惑了一秒钟。我无法找到有效语法的示例,所以我尝试了:

string[] fooArray = new[] {"SomeString"};

编译器没有问题,我想因为它可以绝对地确定数组由字符串填充的类型。

我在docs中看不到任何关于它的信息,而且它似乎不适用于int值(我猜是因为如果我正在通过,它不会自动知道{自动{1}}或int。所以,我想这只是一种好奇心,而不是一个有用的功能。

无论如何,实际的问题。这种语法是否有任何优势,应该使用它的情况以及应该避免的地方?可以用某种方式与数字一起使用吗?

P.S。我觉得有点傻,问这个,看起来像语义。

2 个答案:

答案 0 :(得分:1)

它适用于所有类型,前提是所有项目属于同一类型,或者它可以知道左侧是什么或参数类型是什么。

请注意,它适用于int s:https://dotnetfiddle.net/S2DLzV

答案 1 :(得分:1)

这种语法的优点对于var的任何使用都是相同的 - 避免代码中的重复并更快地进行代码更改。我一直使用这种语法,但实际保存的地方是你编写少量结构化的匿名对象,比如这个测试例;

var tests = new [] {
   new { input="foo", expected = 3 },
   new { input="foobar", expected = 6 },
   new { input="", expected = 0 },
};

foreach(var test in tests) {
    Assert.AreEqual(test.expected, myStringLength(test.input));
}