gpt4 book ai didi

C# 转发可变长度参数

转载 作者:行者123 更新时间:2023-12-05 05:23:57 29 4
gpt4 key购买 nike

我知道如何使用关键字 params 声明可变长度参数列表。但是当你想将那些可变长度参数传递给另一个函数时呢?例如:

public static void Main() {
varargs_m1(1,2,3,4);
}

public static void varargs_m1(params object[] args) {
varargs_m2(args); // Writes args.Length = 4
varargs_m2(0, args); // Writes args.Length = 2
// args = [0, [1,2,3,4]]
}

public static void varargs_m2(params object[] args) {
Console.WriteLine("args.Length = " + args.Length);
}

当我调用 varargs_m2(0, args) 时,我怎样才能让参数成为 [0,1,2,3,4] 而不是 [0, [1,2,3, 4]]

最佳答案

您可以将包含 {0} 的新数组与现有数组连接起来,然后使用 LINQ Concat() 传递它方法:

public static void varargs_m1(params object[] args) 
{
varargs_m2(new object[]{0}.Concat(args).ToArray());
}

如果您想完全避免使用 LINQ,您可以简单地创建一个新数组并以这种方式处理它:

public static void varargs_m1(params object[] args) 
{
// Your new values
var newValues = new object[]{ 0 };
// Build a new array
var combined = new object[newValues.Length + args.Length];
// Copy each of your values into the new array
newValues.CopyTo(combined, 0);
args.CopyTo(combined, newValues.Length);
// Pass your new values along
varargs_m2(combined);
}

关于C# 转发可变长度参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36500969/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com