c#重载

114 阅读1分钟

重载

在同一个类中,方法名相同,参数类型或个数不同,即构成了方法的重载。

为什么要使用重载?

(1)对创建者来说,不用为方法取名而绞尽脑汁。

(2)对使用者来说,不用为记方法名而浪费精力。

例如:在员工类中,有一个计算工资的方法,对于A类人员没有项目提成,对于B类人员有项目提成。

A类人员工资 = 底薪 + 工龄*工龄工资

B类人员工资 = 底薪+工龄*工龄工资 + 项目提成(项目总金额 * 0.1)

class Employee
{
    public string EmpName { get; set; }
    //底薪 + 工龄*工龄工资(没有项目回款的时候)
    /// <summary>
    /// 没有项目提成的算法
    /// </summary>
    /// <param name="baseSalary">底薪</param>
    /// <param name="year">工作年限</param>
    /// <param name="yearMoney">工龄工资</param>
    /// <returns></returns>
    public double GetAllSalary(double baseSalary, int year, double yearMoney)
    {
        return baseSalary + year * yearMoney;
    }
    
    //底薪 + 工龄*工龄工资 + 项目提成(项目总金额  *0.1)(有项目回款的时候)
    /// <summary>
    /// 有项目提成的算法
    /// </summary>
    /// <param name="baseSalary">底薪</param>
    /// <param name="year">工作年限</param>
    /// <param name="yearMoney">工龄工资</param>
    /// <param name="itemMoney">项目总金额</param>
    /// <returns></returns>
    public double GetAllSalary(double baseSalary, int year, double yearMoney, double itemMoney)
    {
        return baseSalary + year * yearMoney + itemMoney * 0.1;
    }
}

对重载方法的调用:

Employee emp1 = new Employee();
Console.WriteLine("工资:" + emp1.GetAllSalary(3000, 5, 100));
Employee emp2 = new Employee();
Console.WriteLine("工资:" + emp2.GetAllSalary(3000, 5, 100,10000));