C# 不显式指定数据类型的新数组

C# 不显式指定数据类型的新数组,c#,C#,我在检查文档的EF时看到了以下语法: DropIndex("dbo.MyTable", new[]{"MyColumName"}); 我一时糊涂,才发现这只是新字符串[]{“MyColumName”}的简写。我无法找到有效语法的示例,因此我尝试: string[] fooArray = new[] {"SomeString"}; 我想编译器没有问题,因为它完全可以根据数组被字符串填充的事实来确定类型 我在中没有看到任何关于它的信息,而且它似乎不适用于int值(我猜是因为它不知道我是自动传递i

我在检查文档的EF时看到了以下语法:

DropIndex("dbo.MyTable", new[]{"MyColumName"});
我一时糊涂,才发现这只是
新字符串[]{“MyColumName”}
的简写。我无法找到有效语法的示例,因此我尝试:

string[] fooArray = new[] {"SomeString"};
我想编译器没有问题,因为它完全可以根据数组被字符串填充的事实来确定类型

我在中没有看到任何关于它的信息,而且它似乎不适用于int值(我猜是因为它不知道我是自动传递
int
还是
long
)。所以,我想这只是一个好奇,而不是一个有用的功能

不管怎样,真正的问题是。这种语法有什么好处吗?在什么情况下应该使用它,在什么情况下应该避免使用它?它能和数字一起使用吗


顺便说一句,我确实觉得问这个问题有点傻,好像是语义学

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


请注意,它确实适用于
int
s:

它应该适用于所有类型,前提是所有项目都是相同的类型,或者它可以知道左手边是什么或参数类型是什么


请注意,它确实适用于
int
s:

此语法的优点对于任何
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));
}

这种语法的优点对于任何
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));
}
您链接的“文档”来自2003年。检查您链接的“文档”是否来自2003年。检查