在 C# 中,有没有办法将数组传递给接受可变长度参数的方法

本文关键字:方法 参数 有没有 数组 | 更新日期: 2023-09-27 18:34:35

假设我有这个方法要调用,它来自第三方库,所以我无法更改它的签名:

void PrintNames(params string[] names)

我正在编写这个需要调用PrintNames的方法:

void MyPrintNames(string[] myNames) {
  // How do I call PrintNames with all the strings in myNames as the parameter?
}

在 C# 中,有没有办法将数组传递给接受可变长度参数的方法

我会尝试

PrintNames(myNames);

如果您看过MSDN上的规格,您就会知道:http://msdn.microsoft.com/en-us/library/w5zay9db.aspx

他们非常清楚地演示了它 - 请注意示例代码中的注释:

// An array argument can be passed, as long as the array 
// type matches the parameter type of the method being called. 

当然。 编译器会将多个参数转换为一个数组,或者只是让您直接传入数组。

public class Test
{
   public static void Main()
   {
      var b = new string[] {"One", "Two", "Three"};
      Console.WriteLine(Foo(b)); // Call Foo with an array
      Console.WriteLine(Foo("Four", "Five")); // Call Foo with parameters
   }
   public static int Foo(params string[] test)
   {
      return test.Length;
   }
}

小提琴