zoukankan      html  css  js  c++  java
  • ref和out解析

    1.用途:

    在C#中当一个方法需要返回多个值的时候,就需要用到ref和out。

    2.Ref使用

            /// <summary>
            /// ref正确例子
            /// </summary>
            /// <returns></returns>
            public IActionResult Sample()
            {
                int x = 1;//初始化
                int y = 1;//初始化
                RefWay(ref x, ref y);
                return Json(x, y);
            }
            /// <summary>
            /// 方法
            /// </summary>
            /// <param name="x">参数X</param>
            /// <param name="y">参数y</param>
            public void RefWay(ref int x, ref int y)
            {
                x = 100;
                y = 100;
            }

    输出:x=100,y=100

         /// <summary>
            /// ref错误例子
            /// </summary>
            /// <returns></returns>
            public IActionResult Sample()
            {
                int x;//未初始化
                int y;//未初始化
                RefWay(ref x, ref y);
                return Json(x, y);
            }
            /// <summary>
            /// 方法
            /// </summary>
            /// <param name="x">参数X</param>
            /// <param name="y">参数y</param>
            public void RefWay(ref int x, ref int y)
            {
                x = 100;
                y = 100;
            }

    错误信息:(1)使用了局部变量的“x”(2)使用了局部变量的“y”

    注意:ref指定的参数在函数调用时候必须初始化,不能为空的引用。

    2.Out使用

    /// <summary>
            /// out正确例子
            /// </summary>
            /// <returns></returns>
            public IActionResult Sample()
            {
                int x;//未初始化
                int y;//未初始化
                RefWay(out x, out y);
                return Json(x, y);
            }
            /// <summary>
            /// 方法
            /// </summary>
            /// <param name="x">参数X</param>
            /// <param name="y">参数y</param>
            public void RefWay(out int x, out int y)
            {
                x = 100;
                y = 100;
            }

    输出:x=100,y=100

        /// <summary>
            /// out错误例子
            /// </summary>
            /// <returns></returns>
            public IActionResult Sample()
            {
                int x;//未初始化
                int y = 100;//初始化
                RefWay(out x, out y);
                return Json(x, y);
            }
            /// <summary>
            /// 方法
            /// </summary>
            /// <param name="x">参数X</param>
            /// <param name="y">参数y</param>
            public void RefWay(out int x, out int y)
            {
                x = y;
                y = 100;
            }

    错误信息: 使用了局部变量的“y”

    注意:out指定的参数在函数调用时候可以不初始化;参数在进入函数时会清空自己,必须在函数内部赋初值。而ref指定的参数不需要。

    总结:

    1.口诀:ref有进有出,out只出不进。

    2.out:举个例子--我们去商店(函数)买东西,我们可以带钱(参数初始化)也可以不带,不管我们带没带钱,我们今天的目的就是去拿东西,

    然后欠钱(参数清空),因为和老板是好朋友。因此我们走的时候必须要带东西走(必须在函数内部赋初值)。

    2.ref:举个例子--我们去商店(函数)买东西,我们必须要带钱(参数初始化),因为我们和老板不认识, 到商店之后,我们可以买东西也可以不买东西,假如我们买了东西,那么我们就可以带着物品(返回值)离开商店假如我们没有买东西,那么我们就带着钱(返回值)离开商店

  • 相关阅读:
    MPlayer源代码分析
    洛谷 P1025 数的划分
    洛谷 P1209 [USACO1.3]修理牛棚 Barn Repair
    洛谷 P1744 采购特价商品
    洛谷 P1443 马的遍历
    洛谷 P1294 高手去散步
    洛谷 P2104 二进制
    洛谷 P1088 火星人
    洛谷 P1062 数列
    洛谷 P2005 A/B Problem II
  • 原文地址:https://www.cnblogs.com/yueyongsheng/p/12157947.html
Copyright © 2011-2022 走看看