Unity 3D游戏开发 - C#语法基础 | 函数之高级参数

函数参数传递

  • 传递参数给函数,分析内存过程。
  • 练习:声明一个Add(int num)函数,将一个值自身加10.
            static void Main(string[] args)
            {
                int age = 5;
                Add(age);
                Console.WriteLine("num:" + age);           //5.
               
                Console.ReadKey();
            }
    
            static void Add(int num)
            {
                Console.WriteLine("num_start:" + num);     //5.
                num += 10;
                Console.WriteLine("num_end:" + num);       //15.
            }
  • 函数普通调用
    • 调用函数,会将函数加载到栈空间中,传递的值是直接拷贝传递,即“值传递”。

ref参数

  • 作用
    • 将一个变量传入一个函数中进行“处理”,“处理”完成后,再将“处理”后的值带出函数。
  • 要求
    • 函数外必须为变量赋值,函数内可以不赋值。
  • 语法
    • 形参和实参前都要加 ref 关键字。例如:Add(ref num);    static void Add(ref int num);
  • 练习:声明一个Add(int num)函数,将一个值自身加10.
            static void Main(string[] args)
            {
                int age = 5;
                Add(ref age);
                Console.WriteLine("num:" + age);    //15.
               
                Console.ReadKey();
            }
    
            static void Add(ref int num)
            {
                num += 10;
                Console.WriteLine(num);             //15.
            }
  • 函数 ref 调用
    • 调用函数,会将函数加载到栈空间中,加了 ref ,传递的是一个地址,即“引用传递”。

out参数

  • 作用
    • 一个函数中若需要返回多个不同类型的值,则需要用 out 参数。
  • 要求
    • 函数外可以不为变量赋值,函数内必须赋值。
  • 语法
    • ​​​​​​​形参和实参前都要加 out 关键字。
    • 例如:Number(a,b,out max,out min);  static void Number(int a,int b,out int max,out int min);
  • 练习:声明一个Number函数,传入2个数值,返回最大、最小、和、平均值。
            static void Main(string[] args)
            {
                int a = 10;
                int b = 5;
                
                int m_max;
                int m_min;
                int m_sum;
                double m_avg;
    
                Number(a, b, out m_max, out m_min, out m_sum, out m_avg);
                Console.WriteLine("MAX:{0},Min{1},Sum:{2},Avg:{3}", m_max, m_min, m_sum, m_avg);
    
                Console.ReadKey();
            }
    
            static void Number(int a, int b, out int max, out int min, out int sum, out double avg)
            {
                if(a > b)
                {
                    max = a;
                    min = b;
                }
                else 
                {
                    max = b;
                    min = a;
                }
    
                sum = a + b;
                avg = sum / 2;
            }

猜你喜欢

转载自blog.csdn.net/weixin_41232641/article/details/81987521