亚洲必赢娱乐第一平台params与值类型参数修饰符

亚洲必赢娱乐第一平台 5

值参数

在动用参数时,把八个值传递给函数使用的三个变量。在函数中对此变量的别的修正都不影响函数调用中内定的参数。如下边包车型大巴函数,是使函数是使传递过来的参数值加倍,并显示出来跋山涉水的近义词

 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关键词钦赐参数。

代码

世家只怕在编码中或多或少的运用过out的ref,不过是还是不是注意过她两的详实用法以致界别?

亚洲必赢娱乐第一平台 2亚洲必赢娱乐第一平台 3

ref参数

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

运转调控台结果如下爬山涉水

亚洲必赢娱乐第一平台 4

用作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);

3.出口类型(out):

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

1.值类型:

输出参数(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);

垄断台出口的结果如下所示爬山涉水

亚洲必赢娱乐第一平台 5

 

那儿能够通过“引用”参数修饰符(即注重字
ref)传递参数,那样函数管理与函数调用中利用的变量正是同叁个(因为引用类型参数字传送递的是援用的地址),所以在措施中对那几个变量进行任何修正都会潜移暗化用作参数的变量的值。

2.援用类型(ref)爬山涉水

亚洲必赢娱乐第一平台 6亚洲必赢娱乐第一平台 7

分裂之处爬山涉水ref 参数在作为参数字传送递时必须先起头化。out
参数则不要求在传递早前早先化(固然在传递早前已经早先化,在函数里面也亟需重新初步化,忽视传递在此以前初叶化的值),但必须在点子甘休再次回到早前赋值。

亚洲必赢娱乐第一平台 8亚洲必赢娱乐第一平台 9

代码

params
修饰的参数数组不钦定参数的数额,唯神采奕奕的节制正是具有的参数类型必须和参数数组是同类型。

亚洲必赢娱乐第一平台 10亚洲必赢娱乐第一平台 11

亚洲必赢娱乐第一平台 12亚洲必赢娱乐第一平台 13

代码

发表评论

电子邮件地址不会被公开。 必填项已用*标注