| 现在我们为Calculate类添加一个静态的Divide()函数,用来求两个整数相除的商。 [C#] 纯文本查看 复制代码 //定义Calculate类
class Calculate
{
//函数:求两整数之商
 static public int Divide(int x, int y)
        {
            return x / y;   //两个整数相除的结果仍为整数
}   
     }在主程序Program.cs中运行:
 运行结果如下:[C#] 纯文本查看 复制代码 static void Main(string[] args)
        {
            int a = 7;
            int b = 2;
            int quo = Calculate.Divide(a,b);
            Console.WriteLine("{0}/{1}={2}",a,b,quo);
        }
  运行结果显示,由于两个INT型数据相除的结果 仍为INT型,小数部分被舍去,所以7/2的结果为3.
 由于传入两个INT型参数,Divide()函数将很好的工作,如果传入两个double型参数,Divide()函数就不能工作了,因为参数类型不匹配。一种解决办法是分别为INT和double型参数定义函数。
 当参数为int时,调用DivideInt()函数,当参数为double型时,调用DivideDouble()函数。[C#] 纯文本查看 复制代码 class Calculate
{
  static public int DivideInt(int x, int y)
        {
            return x / y;   //两个整数相除的结果仍为整数
        }
        //函数:求两实数之商
        static public double DivideDouble(double x, double y)
        {
            return x / y;   //两个实数相除的结果仍为实数
        } 
}用这种方法虽然解决了问题,但类似的功能定义了两个不同名称的函数,使用起来不方便,作为面向对象的语言,C#给我们提供了一个完美的解决方案-函数重载(Overload)
 这里我们定义了两个名称相同的Divide()函数,这种现象称为函数重载,函数重载的调用原则是“最佳匹配(Best-fit)”,即系统调用参数类型最匹配的那个函数。在主函数中运行:[C#] 纯文本查看 复制代码  //函数重载:求两整数之商
        static public int Divide(int x, int y)
        {
            return x / y;   //两个整数相除的结果仍为整数
        }
        //函数重载:求两实数之商
        static public double Divide(double x, double y)
        {
            return x / y;   //两个实数相除的结果仍为实数
        } 
[C#] 纯文本查看 复制代码  static void Main(string[] args)
        {
            int a = 7;
            int b = 2;
            int quo1 = Calculate.Divide(a,b);//调用int版的Divide()函数
            double c = 7.0;
            double d = 2.0;
            double quo2 = Calculate.Divide(c,d);//调用double版的Divide()函数
            Console.WriteLine("{0}/{1}={2}",a,b,quo1);
            Console.WriteLine("{0}/{1}={2}", a, b, quo2);
        }运行结果如下:
   
 其实,console.WriteLine(n)
 console.WriteLine("Hello")
 就是函数重载的例子,.net类库中总共为WriteLine()函数设计了19个重载函数,用来应付各种情况的输出。
 
 
 
 |