我在查看EF的文档时看到了这种语法:
DropIndex("dbo.MyTable", new[]{"MyColumName"});
在弄清楚它只是new string[]{"MyColumName"}
的简写之前,我感到困惑了一秒钟。我无法找到有效语法的示例,所以我尝试了:
string[] fooArray = new[] {"SomeString"};
编译器没有问题,我想因为它可以绝对地确定数组由字符串填充的类型。
我在docs中看不到任何关于它的信息,而且它似乎不适用于int值(我猜是因为如果我正在通过,它不会自动知道{自动{1}}或int
。所以,我想这只是一种好奇心,而不是一个有用的功能。
无论如何,实际的问题。这种语法是否有任何优势,应该使用它的情况以及应该避免的地方?可以用某种方式与数字一起使用吗?
P.S。我觉得有点傻,问这个,看起来像语义。
答案 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));
}