现在我们为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型参数定义函数。[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; //两个实数相除的结果仍为实数
}
} 当参数为int时,调用DivideInt()函数,当参数为double型时,调用DivideDouble()函数。
用这种方法虽然解决了问题,但类似的功能定义了两个不同名称的函数,使用起来不方便,作为面向对象的语言,C#给我们提供了一个完美的解决方案-函数重载(Overload)[C#] 纯文本查看 复制代码 //函数重载:求两整数之商
static public int Divide(int x, int y)
{
return x / y; //两个整数相除的结果仍为整数
}
//函数重载:求两实数之商
static public double Divide(double x, double y)
{
return x / y; //两个实数相除的结果仍为实数
}
这里我们定义了两个名称相同的Divide()函数,这种现象称为函数重载,函数重载的调用原则是“最佳匹配(Best-fit)”,即系统调用参数类型最匹配的那个函数。在主函数中运行:[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个重载函数,用来应付各种情况的输出。
|