一、代码
今天就总结Ref和Out 的总结,这东西,也是经常面试过程中,笔试经常考的,比如:请简述Ref和Out 的区别,或者通过一段代码让你计算这过程的结果。。。。
Out代码实例:::
static void Main(string[] args) { string str = "初始化赋值"; MethodOut(out str); Console.ReadKey(); } /// <summary> /// 只出不进 原来out参数在进入方法的时候,C#会自动清空它的一切引用和指向,所以在上面的out例子中,必需先要为str参数赋值 /// </summary> /// <param name="str"></param> public static void MethodOut(out string str) { str = "Hello World! ---out"; Console.WriteLine(str); }
显示结果
Ref代码实例:::
//ref参数的参数必须最先初始化, static void Main(string[] args) { string str = "初始化赋值"; MethodRef(ref str); Console.ReadKey(); } /// <summary> /// 是有进有出 ref参数在使用前必需初始化,而out不需要。 /// </summary> /// <param name="i"></param> public static void MethodRef(ref string str) { str = "Hello World! --Ref"; Console.WriteLine(str); }
显示结果:::
注意事项:::
1、Ref使用中,初始化,必须赋值,否则报错
2、Ref使用中,输出的时候,不需要赋值(注意:参数输入的时候,必须赋值)
3、OUT使用中,初始化没有赋值,不会报错
4、OUT使用中,输出结果的时候必须赋值,否则会报错
二、总结
1、从上测试结果来看,可以验证ref 和 out 都是传递地址,都会改变具体的值,ref 是有进有出,Out 是 只出不进,
2、ref可以把参数的数值传递进函数,
3、out是把参数清空,就是说你无法把一个数值从out传递进去,out进去后,参数的数值为空(参数不能拿到具体数值),所以你必须初始化一次!
- 博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!
- 小弟刚迈入博客编写,文中如有不对,欢迎用板砖扶正,希望给你有所帮助。