C#方法参数修饰符(关键字)params/in/ref/out

为什么需要方法参数修饰符?

方法参数修饰符为了使方法提供可变参数功能(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

posted @ 2020-12-10 13:19  路鸣  阅读(474)  评论(0编辑  收藏  举报