1. 方法签名
由方法的名称,类型形参的个数和它的每一个形参(从左到右的顺序)的类型和种类(值,引用或输出)组成。方法签名不含返回类型。
同一个类中定义多个方法名相同、参数列表(参数类型,参数个数)不同的方法,这样的形式我们称为方法重载。
比如下面例子:
class Program { static void Main(string[] args) { Console.ReadKey(); } public int Add(int a,int b) { return a + b; } public int Add(int a, int b,int c) { return a + b; } /// <summary> /// 类型形参 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="a"></param> /// <param name="b"></param> /// <param name="c"></param> /// <returns></returns> public int Add<T>(int a, int b, int c) { return a + b; } public double Add(double a, double b) { return a + b; } }
2.下面是调用方法的时候的内存管理
class Program { static void Main(string[] args) { MyClass myClass = new MyClass(); myClass.GetConeVoloume(1,1); Console.ReadKey(); } } class MyClass { public double GetCircleArea(double r) { return Math.PI * r * r; } public double GetCylinderVolume(double a, double b) { double x = GetCircleArea(a); return x*b; } public double GetConeVoloume(double a, double b) { double x = GetCylinderVolume(a,b); return x/3; } }
其中,下面的这段代码中的输入参数是又调用函数来确定的,所以GetConeVoloume方法的2个参数由Main方法控制。调用这个方法的时候,会在栈内存中找2个空闲内存区域,根据方法参数中从左往右的原则往栈中压入数据,先放a,再放b。当这个方法执行完毕的时候,栈上的对象才会进行释放,是先进后出的原则。
MyClass myClass = new MyClass(); myClass.GetConeVoloume(1,1);