ref参数需调用前初始化,用于双向数据传递;out参数无需初始化但方法内必须赋值,专为输出设计,如TryParse模式。

out 和 ref 都是 C# 中用于按引用传递参数的关键字,它们可以让方法修改传入的变量值,并将修改结果带回调用处。虽然功能相似,但两者在使用场景和规则上有重要区别。
使用 ref 修饰的参数要求变量在传递给方法之前必须已经赋值。方法可以读取和修改这个变量的值。
• 必须在调用方法前对变量进行初始化。• 方法内部可以直接读取 ref 参数的当前值。• 常用于需要“双向”传递数据的场景——既输入又输出。示例:
int number = 10;
ModifyValue(ref number);
Console.WriteLine(number); // 输出 20
<p>void ModifyValue(ref int x)
{
Console.WriteLine(x); // 可以读取原始值
x = x * 2; // 修改原变量
}
out 参数的设计目的是让方法返回多个值。与 ref 不同,调用方法时无需初始化变量,但方法内部必须在返回前为其赋值。
• 调用前不需要初始化变量。• 方法体内必须对 out 参数至少赋值一次,否则编译失败。• 更适合“纯输出”场景,比如 TryParse 模式。示例:
int result;
bool success = int.TryParse("123", out result);
<p>if (success)
Console.WriteLine(result); // 输出 123</p><p>// 注意:即使没初始化 result,也能通过 out 正常传参
基本上就这些。选择用哪个取决于你是否需要传入初始值以及语义清晰性——想表达“我提供输入并接受修改”用 ref,想表达“我只想拿结果”就用 out。
以上就是C# out和ref参数修饰符的区别 - 按引用传递参数的两种方式的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号