C#关于Ref与Out的区别
2022-02-25 20:39
1371 查看
在C#中如果你想经过某个函数之后,返回多个类型不相关的值。可能你需要用到ref或者out来进行实现。
1.ref定义
引用形参
用ref修饰符声明的形参是引用形参(reference parameter),用于输入和输出参数的传递。为引用参数传递的实参必须是变量。引用形参并不创建新的存储位置,其存储位置就是方法调用中作为实参给出的那个变量所表示的存储位置。故当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。
当形参为引用形参时,则方法定义和调用方法都必须显式使用ref关键字。方法调用中的对应实参必须为与形参类型相同的变量,且变量在作为引用形参传递之前,必须先明确赋值。
2.out定义
输出形参
用out修饰符声明的形参是输出形参(output parameter),用于输出参数的传递。与引用形参类似,输出形参并不创建新的存储位置,其存储位置就是方法调用中作为实参给出的那个变量所表示的存储位置。事实上,输出形参主要用于当控制权传递回调用方法时,把输出值传递给相应的变量(当希望方法返回多个值时)。
当形参为输出形参时,则方法定义和调用方法都必须显式使用out关键字。方法调用中的对应实参必须为与形参类型相同的变量,但变量在作为输出形参传递之前,不需要确赋值,但是在将变量作为输出形参传递的调用之后,必须明确赋值。
其实大致意思:
ref需要提前定义并赋值
out需要提前定义并不需要赋值,但必须在调用的函数中为其赋值
ref调用方法:
using System; namespace test01 { class Program { static void RefTest(ref string s) { s = "ref"; } static void Main(string[] args) { string s="1"; Program.RefTest(ref s); Console.WriteLine(s); Console.ReadKey(); } } }
运行结果:
out使用方法:
using System; namespace test01 { class Program { static void RefTest(out string s) { s = "out"; } static void Main(string[] args) { /* *string s="1"; 注释的与下面的定义都可以 */ string s; Program.RefTest(out s); Console.WriteLine(s); Console.ReadKey(); } } }
运行结果:
相关文章推荐
- DEMO[C#]refKeyword and outKeyword 关于ref与out关键字区别的DEMO
- DEMO[C#]refKeyword and outKeyword 关于ref与out关键字区别的DEMO
- 关于C#中的ref 和 out 关键字的区别
- 在C#中关于传递参数ref和out分别有什么区别
- C#/.NET中关于ref与out的区别
- C#中关于Ref和Out的区别,附上小例子
- C#中out和ref之间的区别
- c# out 和 ref 的区别
- 【学习笔记】C#中Ref和Out关键字的区别:
- C#中 params out 和 ref之间都有什么用哦? 之间的区别如何?
- C#中out与ref的区别实例解析
- C#中out和ref之间的区别
- c#.net中参数修饰符ref,out ,params得区别
- C#中out和ref之间的区别
- C#中ref和out的区别
- 对C#数据类型的简单理解(value与ref区别、ref与out区别)
- 大话C#中in,out,ref的作用和区别
- c#.net中参数修饰符ref,out ,params得区别
- C#.NET:ref和out的区别
- C# out 输出参数与ref 的区别