就是那个问题。
背景: C#参数
在 C# 中,您可以将方法/函数中的最后一个参数声明为“params”,该参数必须是一维数组,例如:
public void SomeMethod(int fixedParam, params string[] variableParams)
{
if (variableParams != null)
{
foreach(var item in variableParams)
{
Console.WriteLine(item);
}
}
}
然后,这实质上允许调用站点的语法糖隐式构建零个或多个元素的数组:
SomeMethod(1234); // << Zero variableParams
SomeMethod(1234, "Foo", "Bar", "Baz"); // << 3 variableParams
然而,仍然允许绕过糖并显式传递一个数组:
SomeMethod(1234, new []{"Foo", "Bar", "Baz"});
原文由 devoured elysium 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于具有相同方便语法的非托管 C++,没有。
但是 C++ 中的函数支持 可变参数列表。
基本上,您声明一个函数,最后一个参数是省略号 (…),并在函数体内使用 va_start()/va_arg() 调用来解析提供的参数列表。
这种机制不是类型安全的,调用者可以传递任何东西,所以你应该清楚地记录函数的公共接口以及你期望传递的内容。
对于托管 C++ 代码,请参阅 Reed 的注释。