http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 10952|回复: 2

[C#入门] C#类和对象3-函数重载

[复制链接]
发表于 2014-7-18 19:43:38 | 显示全部楼层 |阅读模式
现在我们为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);
        }
运行结果如下: 整除.JPG
运行结果显示,由于两个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);
        }

运行结果如下: 整数小数相除.JPG

其实,console.WriteLine(n)
          console.WriteLine("Hello")
就是函数重载的例子,.net类库中总共为WriteLine()函数设计了19个重载函数,用来应付各种情况的输出。




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-7-18 20:55:55 | 显示全部楼层
发表于 2014-7-18 21:51:08 | 显示全部楼层
写的不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-18 08:24

© 2014-2021

快速回复 返回顶部 返回列表