params关键字允许方法接收可变数量的参数,本质是编译器将多个参数自动封装为数组,提升调用灵活性;它必须是方法最后一个参数,且只能有一个,适用于日志、字符串格式化等场景,但需避免重载歧义和滥用。

C#里的
params
params
举个例子,假设你想写一个计算总和的方法,它可能需要计算两三个数的和,也可能需要计算十几个数的和。如果不用
params
params
public class Calculator
{
public static double Sum(params double[] numbers)
{
if (numbers == null || numbers.Length == 0)
{
return 0;
}
double total = 0;
foreach (double num in numbers)
{
total += num;
}
return total;
}
// 假设还有其他方法
}
// 调用时可以这样:
// double s1 = Calculator.Sum(1.0, 2.5, 3.0);
// double s2 = Calculator.Sum(); // 传入零个参数
// double s3 = Calculator.Sum(10.0); // 传入一个参数
// double[] myNumbers = { 5.0, 6.0, 7.0, 8.0 };
// double s4 = Calculator.Sum(myNumbers); // 传入一个数组你看,调用起来是不是很自然?就像直接把数字列表扔给方法一样。
params
其实,
params
params
params
这跟直接传递一个普通数组参数的区别,主要体现在调用者的便利性上。如果你有一个方法
void ProcessItems(string[] items)
string[]
ProcessItems(new string[] { "item1", "item2" });void ProcessItems(params string[] items)
ProcessItems("item1", "item2");ProcessItems();
params
params
params
params
params
params
int[]
string[]
params int[][]
params List<int>
params
ref
out
params
至于最佳实践,我个人觉得:
params
params
Sum
numbers
null
Length
new T[0]
numbers
null
Length
params
params
params
常见的应用场景:
Log.Info
Log.Error
params object[]
Log.Info("User {0} logged in from {1}", userId, ipAddress);string.Format
params object[]
params
MyList.AddItems(item1, item2, item3);
params
Sum
Min
Max
潜在的陷阱:
params T[]
T[]
void DoSomething(params int[] numbers) { /* ... */ }
void DoSomething(int[] numbers) { /* ... */ } // 这是不允许的,因为签名冲突
// 但如果是:
void DoSomething(params object[] items) { /* ... */ }
void DoSomething(string message, params object[] args) { /* ... */ }
void DoSomething(string[] names) { /* ... */ }
// 此时,DoSomething(new string[]{"a", "b"}) 可能会有歧义,
// 因为 string[] 既可以匹配 params object[],也可以匹配 string[]。
// 编译器通常会选择更具体的那个(string[]),但有时候会让你感到意外。最好的做法是,如果使用了
params
params object[]
params object[]
InvalidCastException
params
params
params
总的来说,
params
以上就是C#的params关键字如何传递可变参数?有什么限制?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号