将对象作为对象数组传递

时间:2014-12-01 13:36:38

标签: c# arrays

我有一个接受对象数组作为参数的常用方法。

现在,有些情况我只需要将一个对象传递给函数调用。为了节省代码和内存行,我尝试以内联方式执行:

func(new ObjectType(param));

但这不会编译,因为它期望一个对象数组。如何在函数调用中将此对象转换为数组? (它是否需要另一个构造函数或运算符重载?)

2 个答案:

答案 0 :(得分:4)

我假设函数签名是func(object[] items)

几个选项:

  • 创建一个新数组:func(new[] { new ObjectType(param) })

  • 添加一个带有单个参数的新重载:func(object item)

  • 将签名更改为paramsfunc(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

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