Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将对象作为对象数组传递_C#_Arrays - Fatal编程技术网

C# 将对象作为对象数组传递

C# 将对象作为对象数组传递,c#,arrays,C#,Arrays,我有一个接受对象数组作为参数的常用方法 现在,在一些实例中,我只需要将单个对象传递给函数调用。为了节省代码行和内存,我尝试以内联方式进行: func(new ObjectType(param)); 但这不会编译,因为它需要一个对象数组。如何将此对象转换为函数调用中的数组?(它是否需要另一个构造函数或运算符重载?我假设函数签名是func(object[]items) 很少有选择: 创建新数组:func(new[]{new ObjectType(param)}) 添加采用单个参数的新重载:fun

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

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

func(new ObjectType(param));

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

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

很少有选择:

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

  • 添加采用单个参数的新重载:
    func(对象项)

  • 将签名更改为:
    func(参数对象[]项)
    。这将需要一个数组或零个以上的对象(例如
    func(item1、item2、item3)


我假设函数签名是
func(对象[]项)

很少有选择:

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

  • 添加采用单个参数的新重载:
    func(对象项)

  • 将签名更改为:
    func(参数对象[]项)
    。这将需要一个数组或零个以上的对象(例如
    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

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

使用
参数
关键字:

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

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

新建对象[]{Object\u i\u want\u in_array}
?或者类似的?或者重写函数,只取一个?
新对象[]{Object_i_want_in_array}
?或者类似的?或者重写函数以只取一个?对于第一个选项,我已经重写了默认构造函数。所以我想这是行不通的。第三个选项看起来不错,我不确定构造器和它有什么关系。您可能需要发布更多的代码来澄清什么是
func
,以及它的声明位置。在c#@Jcl上有多个构造函数签名并没有错。这并没有错,但我想这也需要我明确定义一个默认构造函数。“这是我不想说的。”萨沙姆我不明白你的意思。如果您有
类(对象a)
类(对象[]a)
您可以使用任一签名创建
新类。在
Class
中,如果需要,可以进行构造函数链接。对于第一个选项,我已经覆盖了默认构造函数。所以我想这是行不通的。第三个选项看起来不错,我不确定构造器和它有什么关系。您可能需要发布更多的代码来澄清什么是
func
,以及它的声明位置。在c#@Jcl上有多个构造函数签名并没有错。这并没有错,但我想这也需要我明确定义一个默认构造函数。“这是我不想说的。”萨沙姆我不明白你的意思。如果您有
类(对象a)
类(对象[]a)
您可以使用任一签名创建
新类。在
类中
如果需要,可以进行构造函数链接。