C# ref传参与out传参

发布时间:2023年12月18日

在 C# 中,ref 和 out 都是用于传递参数的关键字

1、ref 关键字:

ref 用于将一个变量传递给方法,并允许方法修改该变量的值。
调用方法时,必须先初始化被 ref 修饰的变量,否则会编译错误。
方法内部可以不给 ref 参数重新赋值,但是如果赋值了,必须确保在方法返回前给 ref 参数赋值。
在方法调用之后,原始变量的值可能会被修改。

static void ChangeValue2(ref int value) {
  value += 20;
  Console.WriteLine("ref内部:" + value);//40
}

int number = 20;
ChangeValue2(ref number);
Console.WriteLine("ref外部:" + number); //40

2、out 关键字:

out 也用于将一个变量传递给方法,允许方法修改该变量的值。
调用方法时,可以不初始化被 out 修饰的变量,因为传递给 out 的变量在方法内部必须被赋值。
在方法内部必须给 out 参数重新赋值,否则编译错误。
在方法调用之前,原始变量的值对于 out 参数没有影响,方法调用之后,out 参数中存储的值会被返回。

static string getName(out string f) {
  //可以让你正常获取return的同时多获取一部分。
  //其实这个f代表的是外部的name属性,有的时候需要把外部变量放到方法内部赋值
  f = "古力娜扎";
  return "迪丽热巴";
}

// 调用out方法
// 如果方法上的形参使用了out修饰,那么需要传递一个相同类型的变量
string name = "";
string name2 = getName(out name);
Console.WriteLine(name); //古力娜扎  (这个是name的值)
Console.WriteLine(name2); //迪丽热巴 (这个是函数的返回值)

ref 和 out 关键字在用法上有些相似,都可以将变量传递给方法并允许方法修改变量的值。不同之处在于,ref 在方法调用之前必须初始化,而 out 不需要初始化,并且在方法调用之后,out 参数中存储的值会被返回。

文章来源:https://blog.csdn.net/qq_51810680/article/details/135018000
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。