我可以将对象数组作为 C# 中 params 方法的多个参数传递吗?

问题描述 投票:0回答:2

例如我有这样的 C# 方法:

void someMethod(String arg1, params object[] extras)
{
    foreach (object extra in extras)
    {
        Console.WriteLine(extra);
    }
}

当我这样称呼它时:

int[] vals = new int[] { 10, 25 };
someMethod("String", vals);

我得到输出:

System.Int32[]

实际上我想将 vals 变量作为多个 int 参数传递,而不是作为数组类型的单个参数传递,有什么方法可以做到吗?

c# variadic-functions
2个回答
0
投票

没有其他办法。问题是,

extras
参数是数组类型(
object []
),
params
只是语法糖,这意味着你不能真正传递多个参数,只能传递一个,甚至可以是
null


0
投票

params
方法的重载指定它首先尝试直接匹配数组参数。只有这样它才会尝试通过
params
元素进行匹配。

它在这里不起作用的原因是因为

int[]
数组不是
object[]
数组,也不能将其转换为一个。

如果你声明了它就会起作用

object[] vals = new object[] { 10, 25 };

或者改变方法

void someMethod(String arg1, params int[] extras)
© www.soinside.com 2019 - 2024. All rights reserved.