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