我有一个接受对象数组作为参数的常用方法。
现在,有些情况我只需要将一个对象传递给函数调用。为了节省代码和内存行,我尝试以内联方式执行:
func(new ObjectType(param));
但这不会编译,因为它期望一个对象数组。如何在函数调用中将此对象转换为数组? (它是否需要另一个构造函数或运算符重载?)
答案 0 :(得分:4)
我假设函数签名是func(object[] items)
?
几个选项:
创建一个新数组:func(new[] { new ObjectType(param) })
添加一个带有单个参数的新重载:func(object item)
将签名更改为params:func(params object[] items)
。这将采用数组或零个更多对象(例如func(item1, item2, item3)
)
答案 1 :(得分:0)
使用params
关键字:
private void MyFunc(params string[] args)
{
foreach(string s in args)
{
Console.WriteLine(s);
}
}
像这样测试
MyFunc("foo"); // pass single string
MyFunc(new string[] {"foo", "bar"}); // pass array
说实话,编译器生成的代码如果传递单个字符串,则会创建一个包含单个元素的新数组。这应该不是问题,除了功能非常关键性能。