为什么需要方法参数修饰符?
方法参数修饰符为了使方法提供可变参数功能(params)和指定参数为引用传递而非值传递(in/ref/out)
- params 指定此参数采用可变数量的参数。
-
in 指定此参数由引用传递,但只由调用方法读取。
-
ref 指定此参数由引用传递,可能由调用方法读取或写入。
-
out 指定此参数由引用传递,由调用方法写入。
使用 params
关键字可以指定采用数目可变的参数的方法参数。 参数类型必须是一维数组。
在方法声明中的 params
关键字之后不允许有任何其他参数,并且在方法声明中只允许有一个 params
关键字。
如果 params
参数的声明类型不是一维数组,则会发生编译器错误 CS0225。
使用 params
参数调用方法时,可以传入:
- 数组元素类型的参数的逗号分隔列表。
- 指定类型的参数的数组。
- 无参数。 如果未发送任何参数,则
params
列表的长度为零。
使用in关键字标识参数作为入参,入参传入方法前必须初始化,且在方法中不能修改参数值;out关键字标识参数作为出参,不需要初始化值,方法中可修改参数值,且在方法调用时需显示使用out关键字
如下代码:
int readonlyArgument = 44;
InArgExample(readonlyArgument);
Console.WriteLine(readonlyArgument); // value is still 44
void InArgExample(in int number)
{
// Uncomment the following line to see error CS8331
//number = 19;
}
int initializeInMethod;
OutArgExample(out initializeInMethod);
Console.WriteLine(initializeInMethod); // value is now 44
void OutArgExample(out int number)
{
number = 44;
}
本文摘抄官方文档,地址为:方法参数 - C# 参考 | Microsoft Docs