将集合的项目发送到某些方法作为params []变量

时间:2012-02-23 08:27:54

标签: c#

我有一个方法foo(params[] items)

我有一个集合(List,Set,...) 我想将其项目发送到foo作为项目

我可以使用什么语法?

2 个答案:

答案 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);

有效。