C# 数组作为参数隐式转换
在这3种情况下,初始化数组是可以的C# 数组作为参数隐式转换,c#,arrays,C#,Arrays,在这3种情况下,初始化数组是可以的 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@
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" });
为什么?尝试使用:
new[]{ "one@g.com", "two@g.com" }
编辑:或者您可以使用
new string[]{ "one@g.com", "two@g.com" }
请参阅:使用关键字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);
你凭什么认为它无效?
.Send()
的方法签名是什么?发布的代码没有多大帮助,因为{”one@g.com", "two@g.com“}
不是有效的C#数组初始值设定项。您需要告诉C#要构建哪个集合,数组不是默认的集合类型可能的重复