《C#图解教程》第5版笔记-方法的参数

形参与实参

实参位于方法调用的参数列表中。每一个实参必须与对应形参的类型相匹配,或者编译器必须能把实参隐式转换为那个类型。

代码示例:MyClass类声明了两个方法。对于第二次调用,注意编译器把int值5和someInt隐式转换成了float类型。

using System;

namespace ConsoleApp2
{
    class MyClass
    {
        public int Sum(int x,int y)                        //声明方法,含两个形参
        {
            return x + y;
        }

        public float Avg(float input1,float input2)        //声明方法
        {
            return (input1 + input2) / 2;
        }
        
        static void Main()
        {
            MyClass mc = new MyClass();                    //创建实例对象
            int someInt = 6;
            Console.WriteLine(mc.Sum(4, someInt));         //调用方法,传入两个实参
            Console.WriteLine(mc.Avg(18, someInt));        //编译器把int值5和someInt隐式转换成了float类型
                
        }
    }
}

值参数

值参数是以把实参的值复制到形参的方式把数据传递给方法,当方法被调用时,系统执行如下操作:

  • 在栈中为形参分配控件。
  • 将实参的值复制给形参。

注意:值类型和值参数是两个完全不同的概念,所谓值类型就是指类型本身包含其值,值参数是把实参的值复制给形参。

代码示例:下面的代码展示了一个名为MyMethod的方法,它有两个参数:一个MyClass类型的变量和一个int

using System;

namespace ConsoleApp2
{
    class MyClass
    {
        public int Val = 20;
    }

    class Program
    {
        static void Main()
        {
            MyClass a1 = new MyClass();                       //MyClass类型,引用类型
            int a2 = 10;                                      //值类型,存储在栈中

            MyMethod(a1, a2);
            Console.WriteLine($"a1.Val:{a1.Val},a2:{a2}");
        }
                
        static void MyMethod(MyClass f1, int f2)
        {
            f1.Val = f1.Val + 5;
            f2 = f2 + 5;
            Console.WriteLine($"f1.Val:{f1.Val},f2:{f2}");
        }

    }
}

引用类型

未经允许不得转载:透视数据 » 《C#图解教程》第5版笔记-方法的参数