2023-02-17
编程语言
00

目录

作用
ref
out
总结

作用

  • 是一个函数参数的修饰符,解决值类型和引用类型的函数变量,在函数内部修改值时,能够影响外部传入的变量,让其也被修改
  • 两者目的相同,使用的方式和表达的语义不同

ref

  • 使用ref修饰的参数,变量在赋值前必须在外部初始化,内部变量不强制要求修改
c#
void RefFunciton(ref int vaule) { vaule += 10; } int num = 5; RefFunciton(ref num); //输出15 System.Console.WriteLine(num);

out

  • 使用out修饰的参数,变量在外部不用初始化,但是在内部必须赋值
c#
void OutFunciton(out int a, out int b) { a = 10; b = 20; } int x, y; OutFunciton(out x, out y); //输出x为10,y为20 System.Console.WriteLine("x的值为{0},y的值为{1}", x, y);
  • out参数也可以用于一个函数的多返回值,一个函数有多少个返回值,就定义多少个out参数,同时在外部定义对应数量的变量来接收即可
c#
int OutFunciton2(int a, out int b, out int c) { a = 10; b = 20; c = 30; return a; } int x = 0; int y, z; int x1 = OutFunciton2(x, out y, out z); Console.WriteLine("x的值为{0},y的值为{1},z的值为{2}", x1, y, z);

总结

refout的核心目的都是按引用传递参数,让方法可以修改调用者传入的变量,虽然两者本质上都是引用传递,但 ref 强调“修改已存在的值”,而 out 强调“返回新的值”。这也是为什么 out 参数在方法内部必须赋值,而 ref 参数不强制要求赋值

本文作者:xuxuxuJS

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!