将对象作为对象数组传递
本文关键字:对象 数组 | 更新日期: 2023-09-27 18:32:33
我有一个接受对象数组作为参数的常用方法。
现在,在某些情况下,我只需要将单个对象传递给函数调用。为了节省代码行和内存,我尝试内联为:
func(new ObjectType(param));
但这不会编译,因为它需要对象数组。如何在函数调用中将此对象转换为数组?(它是否需要另一个构造函数或运算符重载?
我假设函数签名是func(object[] items)
?
几个选项:
-
创建一个新数组:
func(new[] { new ObjectType(param) })
-
添加一个采用单个参数的新重载:
func(object item)
-
将签名更改为参数:
func(params object[] items)
。 这将需要一个数组或多个对象的零个(例如func(item1, item2, item3)
)
使用 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
老实说,编译器会生成代码,如果您传递单个字符串,则会创建一个包含单个元素的新数组。这应该不是问题,除了该功能对性能非常关键。