像 c 中的 c# 参数一样吗?

新手上路,请多包涵

就是那个问题。

背景: 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 许可协议

阅读 396
2 个回答

对于具有相同方便语法的非托管 C++,没有。

但是 C++ 中的函数支持 可变参数列表

基本上,您声明一个函数,最后一个参数是省略号 (…),并在函数体内使用 va_start()/va_arg() 调用来解析提供的参数列表。

这种机制不是类型安全的,调用者可以传递任何东西,所以你应该清楚地记录函数的公共接口以及你期望传递的内容。

对于托管 C++ 代码,请参阅 Reed 的注释。

原文由 LBushkin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题