●自定义函数

函数

  优势:1、代码可以重用;2、代码相对独立;3、便于分工

  编程尽量做到:高内聚,低耦合(程序的各个部分尽量相对独立,减少交叉)

  函数的定义及调用。例:

 1         //定义一个求最大值函数
 2         static int Max(int a, int b)    //a,b为形参(形式参数),函数的输入
 3         {
 4             if (a >= b)
 5             {
 6                 return a;    //如果a>=b,那么返回值为a
 7             }
 8             else
 9                 return b;    //如果a<b,那么返回值为b
10         }
11 
12         static void Main(string[] arge)
13         {
14             //调用函数
15             int a = 3, b = 6, c = 1, d = 4;
16             int z = Max(Max(Max(a, b), c), d);    //a,b,c,d为实参(实际参数)
17             Console.WriteLine(z);
18 
19         }
        //static int JieCheng(int n)    //定义的函数返回整数值
        static void JieCheng(int n)    // 定义的函数不返回值
        {
            int jc = 1;
            for (int i = 1; i <= n; i++)
            {
                jc = jc * i;
            }
            //return jc;
            Console.WriteLine(jc);
        }

        static void Main(string[] args)
        {
            int m = 7;
            //int jg = JieCheng(m);    //返回值的函数的调用
            //Console.WriteLine("结果为:"+jc);
            JieCheng(m);    //不返回值的函数的调用
        }

运行结果如下

传值与传址

  1、传值。实参将数值传给形参,实参不受影响。整型、浮点型、字符型、布尔型、结构体都是用传值。

  例:

 1         static void Add(int n)
 2         {
 3             Console.WriteLine("add1," + n);
 4             n = n + 10;
 5             Console.WriteLine("add2," + n);
 6         }
 7         static void Main(string[] args)
 8         {
 9             int x = 3;
10             Console.WriteLine("main1,"+x);
11             Add(x);
12             Console.WriteLine("main2,"+x);
13         }

显示结果如下

  2、传址。形参根据所传地址使用实参数值。数组、字符串使用的是传址。如果整型等使用传址,方法是在定义形参前加ref,不推荐整型等使用传址。

  例:

        static void Add(ref int n)    //定义形参前加ref,此方法为传址。
        {
            Console.WriteLine("add1," + n);
            n = n + 10;
            Console.WriteLine("add2," + n);
        }
        static void Main(string[] args)
        {
            int x = 3;
            Console.WriteLine("main1,"+x);
            Add(ref x);    //调用函数时,也需要在实参前加ref
            Console.WriteLine("main2,"+x);
        }

显示结果如下

  当定义函数,需要的返回值不止一个的时候,可以用out

 1         static int Add(int a,int b,out int c,out int d)    //当需要不止一个返回值时,用out,out可以用多个
 2         {
 3             c = a + 5;
 4             d = b + 3;
 5             int sum = a + b;
 6             return sum;
 7         }
 8         static void Main(string[] args)
 9         {
10             int i = 12, j = 11;
11             int x = 0;    //定义一个整型接收返回值
12             int y = 0, z = 0;    //定义两个变量,用来接收out返回值
13             x = Add(i, j, out y,out z);    //变量前面也要加out
14             Console.WriteLine(x + "	" + y + "	" + z);15         }

    显示结果如下

  简化数组输入(用params

 1         static int[] PaiXu(params int[] a)
 2         {
 3             for (int i = 0; i < a.Length; i++)    //按升序排序
 4             {
 5                 for (int j = 1; j < a.Length; j++)
 6                     if (a[j] < a[j - 1])
 7                     {
 8                         int c = a[j];
 9                         a[j] = a[j - 1];
10                         a[j - 1] = c;
11                     }
12             }
13             return a;    //返回数组a
14         }
15 
16         static void Main(string[] args)
17         {
18             int[] x = new int[5];    //定义一个数组,用来接收返回数组
19             x = PaiXu(4, 7, 1, 8, 3);    //函数定义的时候用了params,所以()内可以直接输入数值
20             //输出
21             for (int i = 0; i < 5; i++)
22             {
23                 Console.Write(x[i] + "	");
24             }
25 
26         }

    显示结果如下

原文地址:https://www.cnblogs.com/phantom-k/p/3945839.html