关于C#中 out/ref的一些个人理解
2013-03-17 22:10
337 查看
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; namespace ConsoleApplication1 { /// <summary> /// ref是传递参数的地址,使用ref前必须对变量赋值,ref引用的可以修改,也可以不修改。 /// out是返回值,使用out前可以不对变量赋值,out的所有引用必需修改。 /// 由于是传递参数地址的相对应引用的值是真实的修改。 /// </summary> public class Program { /// <summary> /// 传入两个数 例如 x=10,y=20 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <result>结果x=10,y=20传入的值没有改变说明使用的是x,y的副本</result> static void norTest(int x, int y) { x = 1; y = 2; } /// <summary> /// 传入两个数 例如 x=10,y=20 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <result>结果x=1,y=2传入的值有改变说明是对x,y真实引用</result> static void outAllTest(out int x, out int y) { x = 1; y = 2; } /// <summary> /// 传入两个数 例如 x=10,y=20 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <result>结果编译不通过说明使用out时必需对所有out传入的参数有所操作</result> //static void outTest(out int x, out int y) //{ // x = 1; //} /// <summary> /// 传入两个数 例如 x=10,y=20 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <result>结果x=1,y=20编译不会报错说ref引用对传入可以有选择的对数据进行处理或都不处理</result> static void refTest(ref int x, ref int y) { x = 1; } /// <summary> /// 传入两个数 例如 x=10,y=20 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <result>结果x=1,y=2传入的值有改变说明是对x,y真实引用</result> static void refAllTest(ref int x, ref int y) { x = 1; y = 2; } public static void Main() { int a, b; //以下报错ref引用前必需要对a,b赋值 //norTest(a, b); //refTest(ref a, ref b); //refAllTest(ref a, ref b); //没有报错说明对out引用前可以对a,b不赋值 outAllTest(out a, out b); Console.WriteLine("a={0} , b={1}", a, b); a=10; b=20; norTest(a, b); Console.WriteLine("a={0} , b={1}",a,b); a = 10; b = 20; outAllTest(out a, out b); Console.WriteLine("a={0} , b={1}", a, b); a = 10; b = 20; refTest(ref a, ref b); Console.WriteLine("a={0} , b={1}", a, b); a = 10; b = 20; refAllTest(ref a, ref b); Console.WriteLine("a={0} , b={1}", a, b); } } }
相关文章推荐
- 关于c#中”ref”和”out”关键字的一些理解
- 关于C#中ref与out参数的理解
- 关于Bean\Entity\Model\POJO的一些个人理解
- C# Out/Ref关键字的理解和区别
- 关于AOP的一些个人理解
- 关于C#的一些几个关键的概念:out,ref,const,readonly
- 关于KMP的一些个人理解
- c# out ref 多个返回值问题个人总结
- 关于大数据的一些个人理解
- 深入理解C#之 参数传递 ref out params
- 关于Volatile关键字含义的一些个人理解
- C# 参数传递、引用传递的一些个人理解
- 关于wordpress的$post全局变量,以及主循环the loop的一些个人理解。
- 关于.NE弱引用的一些个人理解
- 关于C#值类型,引用类型,值传递,引用传递(ref,out)
- C#/.NET中关于ref与out的区别
- 关于线程和父子进程的一些个人理解
- 关于c#中委托与事件的一些理解
- c#基础系列之ref和out的深入理解
- 关于c#中static的一些理解