C#中ref和out关键字的应用以及区别。
官方文档
编写安全有效的 C# 代码
- params 指定此参数采用可变数量的参数。
- in 指定此参数由引用传递,但只由调用方法读取。
- ref 指定此参数由引用传递,可能由调用方法读取或写入。
- out 指定此参数由引用传递,由调用方法写入。
params
使用 params 关键字可以指定采用数目可变的参数的方法参数。
用法
- 参数类型必须是一维数组。
- 在方法声明中的 params 关键字之后不允许有任何其他参数(params参数必须是参数表的最后一个参数)。
- 并且在方法声明中只允许有一个 params 关键字(不允许将params修饰符与ref和out修饰符组合起来使用)。
- 果 params 参数的声明类型不是一维数组,则会发生编译器错误 CS0225。
- 使用 params 参数调用方法时,可以传入:
(1)数组元素类型的参数的逗号分隔列表;
(2)指定类型的参数的数组;
(3)无参数。 如果未发送任何参数,则 params 列表的长度为零。- 若实参是数组则按引用传递,若实参是变量或表达式则按值传递。
public class MyClass
{
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++) Console.Write(list[i] + " ");
Console.WriteLine();
}
public static void UseParams2(params object[] list)
{
for (int i = 0; i < list.Length; i++) Console.Write(list[i] + " ");
Console.WriteLine();
}
static void Main()
{
UseParams(1, 2, 3, 4);
UseParams2(1, 'a', "test");
UseParams2();
int[] myIntArray = {
5, 6, 7, 8, 9 }