c#之重载

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

 

c#之重载

上一篇:c#之操作符


下一篇:c# 回顾随笔1