在这三种情况下初始化数组是正确的
string[] To = { "one@g.com", "two@g.com" };
string[] To = new[] { "one@g.com", "two@g.com" };
string[] To = new string[] { "one@g.com", "two@g.com" };
但是当使用它作为参数时,第一个选项无效 所以这是有效的
MethodWithAnArrayParam(new string[] { "hi@t.com", "hi@t.com" });
MethodWithAnArrayParam(new [] { "hi@t.com", "hi@t.com" });
这会产生错误
MethodWithAnArrayParam({ "hi@t.com", "hi@t.com" });
为什么?
答案 0 :(得分:2)
使用关键字new
进行排列声明试试这个
string TO = new string[]{ "one@g.com", "two@g.com" };
您也可以使用通用数组
var TO = new[]{ "one@g.com", "two@g.com" };
根据给定的值自动自动给出相同的数据类型:
new [] { "Hello "," World "} string array
new [] {0, 1, 2} int array
...
所有这些都是无效的,因为在任何时候你都告诉编译器它是一个数组,因为{}有几种不同的用途
emailProvider.Send("hello", { "one@g.com", "two@g.com" }, null, "subject");
emailProvider.Send("hello", (new string[] { "hi@t.com", "hi@t.com" }), null, "subject");
您不能创建没有阴影的语句,也不能在参数的位置创建未分配的语句
bool Send(string message, string[] to, string[] bccTo, string subject);
答案 1 :(得分:1)
尝试使用:
new[]{ "one@g.com", "two@g.com" }
编辑:或者您可以使用
new string[]{ "one@g.com", "two@g.com" }