在C#中,可以使用params
关键字指定类型参数的任意数量的方法:优雅传递列表和对象PARAMS
public void DoStuff(params Foo[] foos) {...}
public void OtherStuff {
DoStuff(foo1);
DoStuff(foo2, foo3);
}
如果你已经有对象的列表,你可以打开它进入一个数组传递给此方法:
DoStuff(fooList.ToArray());
但是,有没有什么优雅的方式混合n匹配?也就是说,要传递多个对象和对象列表,并将结果展平成一个列表或数组给你?理想情况下,我想能够调用我的方法是这样的:
DoStuff(fooList, foo1, foo2, anotherFooList, ...);
至于现在,我知道如何做到这一点的唯一方法是预先处理一切到一个列表,我不不知道有什么办法可以做到这一点。
编辑:要清楚,我没有结婚到params
关键字,它只是一个相关的机制,帮我解释一下我想做的事。我很满意任何看起来很干净的解决方案,并将所有东西都放到一个列表中。
除非确实需要,否则不要使用'params'。 –
我希望*没有办法混合和匹配。编译器如何知道你是否想要压扁一个对象数组的对象?它是否应该展平一组对象数组?它怎么可能决定何时扁平化以及何时不扁平化? –
我并不十分清楚你的目标或动机是什么,但_params_的文档http://msdn.microsoft.com/en-us/library/w5zay9db.aspx显示了_object_类型数组的使用在'公共静态无效UseParams2(params对象[]列表)' –