将对象作为对象数组传递

本文关键字:对象 数组 | 更新日期: 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

老实说,编译器会生成代码,如果您传递单个字符串,则会创建一个包含单个元素的新数组。这应该不是问题,除了该功能对性能非常关键。