我有一个方法foo(params[] items)
我有一个集合(List,Set,...)
我想将其项目发送到foo
作为项目
我可以使用什么语法?
答案 0 :(得分:4)
如果只将数组作为参数传递,它将作为项目传递。所以只需使用Collection.ToArray
即可。实际上,当你使用params
时,有一些很好的了解。如果你传递null,意图将它作为第一个传递,并且只有param,它将被用作null数组。所以使用这样的代码:
SomeMethod(null);
public void SomeMethod(params object[] items)
{
...
}
项目将为空,而不是array
,长度为1,null
为第一元素。
答案 1 :(得分:1)
该方法签名无效,因此无法编译。您仍需要指定项目的类型,例如:
foo(params string[] items) { }
然后你可以简单地调用它:
foo("one", "two", "three");
foo(new string { "one", "two", "three"});
foo(myCollection.ToArray());
或者,
foo(myArrayOfStrings);
myArrayOfStrings
是一个字符串数组。
在迭代项目之前,您还应确保检查null参数,因为
foo(null);
有效。