您的位置:威尼斯官方网站 > 威尼斯正规官网 > ref参数以及一般值参数

ref参数以及一般值参数

发布时间:2019-11-20 13:33编辑:威尼斯正规官网浏览(174)

    世家大概在编码中或多或少的应用过out的ref,可是是或不是注意过她两的事必躬亲用法以致界别?

    本文想介绍下详细介绍下out参数,ref参数以至平日值参数。

    值参数

    威尼斯官方网站,在应用参数时,把多个值传递给函数使用的三个变量。在函数中对此变量的其他改革都不影响函数调用中钦赐的参数。如上边包车型大巴函数,是使函数是使传递过来的参数值加倍,并彰显出来:

     static void ShowDouble(int num)
            {
                num = num * 2;
                Console.WriteLine("num*2={0}", num);
            }
    

    参数num在函数中被加倍,固然按以下格局调用它:

                int num = 5;
                Console.WriteLine("num={0}", num);
                ShowDouble(num);
                Console.WriteLine("num={0}", num);
    

    出口到调节台的文件如下所示:

    威尼斯官方网站 1

    把num作为参数,调用ShowDouble()并不影响Mian()中num的值,尽管把num值加倍之后再赋值给num,在函数调用完未来num的值照旧不会变。

    那也没怎么问题。

    不过假若我们想改正num的值吗?我们会想到利用为num再次回到新值的函数:

     static int DoubleNum(int num)
            {
                num = num * 2;
                return num;
            }
    

    接下来调用:

                int num = 5;
                Console.WriteLine("num={0}", num);
                num = DoubleNum(num);
                Console.WriteLine("num={0}", num);
    

    这段代码不是很直观,且不能够更换充当参数的八个变量值(因为函数独有叁个重临值卡塔尔。此时我们能够想到援引参数,即函数管理的变量和函数调用的变量雷同,而不止是值相仿的变量。因而对那一个变量的其余改换都会潜移暗化用作参数的变量值。为此,大家使用ref关键词内定参数。

    ref参数

                int num = 5;
                Console.WriteLine("num={0}", num);
                ShowDouble(ref num);
                Console.WriteLine("num={0}", num);
    

    运转调整台结果如下:

    威尼斯官方网站 2

    用作ref的参数的变量有多个节制:

    1.函数可能会转移援用参数的值,所以必需在函数调用中应用“非常量”变量,所以上面包车型的士代码是不被允许的:

     

                const int num = 5;
                Console.WriteLine("num={0}", num);
                ShowDouble(ref num);
                Console.WriteLine("num={0}", num);
    

    2.必需使用早先化过的变量。C#不允许假定ref参数在函数调用时开端化,下边包车型大巴代码也是不被允许的:

                int num;
                Console.WriteLine("num={0}", num);
                ShowDouble(ref num);
                Console.WriteLine("num={0}", num);
    

    出口参数(out卡塔 尔(阿拉伯语:قطر‎

    除此之外ref外,还是能够钦命out关键字,钦命所给的参数时一个出口参数,out参数和ref参数都在函数定义和函数调用中作为参数的修饰符。事实上,它的执行办法与ref参数大致全盘平等,因为在函数试行实现后,该参数的值将回来给函数调用中利用的变量。可是,二者存在一些人命关天不同:

    1.把未赋值的变量用作ref参数是违规的,不过未赋值的变量能够用作out参数

    2.在函数中接纳out参数时,必需将其看成还没赋值。也正是说调用代码能够把已赋值的变量用作out参数,但在函数实践时该变量的值会遗失。

    如将来有二个回到数组中最大值得马克斯(卡塔 尔(阿拉伯语:قطر‎函数,获取数组中最大值得元素索引(这里假若假诺有八个最大值,只回去第三个最大值索引卡塔尔,增添out参数:

      static int Max(int[] intArray,out int maxIndex)
            {
                int maxVal = intArray[0];
                maxIndex = 0;
                for (int i = 1; i < intArray.Length; i++)
                {
                    if(intArray[i]>maxVal)
                    {
                        maxVal = intArray[i];
                        maxIndex = i;
                    }
                }
                return maxVal;
            }
    

    调用下边包车型大巴代码:

     int[] myArray = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 };
     int maxIndex;
     Console.WriteLine("the maxium value is {0}", Max(myArray, out maxIndex));
     Console.WriteLine("the index of the maxium value is{0}", maxIndex + 1);
    

    垄断(monopoly卡塔 尔(英语:State of Qatar)台出口的结果如下所示:

    威尼斯官方网站 3

     

    本文由威尼斯官方网站发布于威尼斯正规官网,转载请注明出处:ref参数以及一般值参数

    关键词:

上一篇:没有了

下一篇:该SqlDapperUtil已平淡无奇用于集团项目中