代码改变世界

Ref 和 Out 区别(演练代码)

2017-08-05 16:55  小白admin  阅读(972)  评论(0编辑  收藏  举报

一、代码

 今天就总结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 文章,请原谅博主成为一个无耻的文档搬运工!
  • 小弟刚迈入博客编写,文中如有不对,欢迎用板砖扶正,希望给你有所帮助。