轻松学c#之运算符重载

上传人:mg****85 文档编号:49691076 上传时间:2018-08-01 格式:PPTX 页数:24 大小:656.06KB
返回 下载 相关 举报
轻松学c#之运算符重载_第1页
第1页 / 共24页
轻松学c#之运算符重载_第2页
第2页 / 共24页
轻松学c#之运算符重载_第3页
第3页 / 共24页
轻松学c#之运算符重载_第4页
第4页 / 共24页
轻松学c#之运算符重载_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《轻松学c#之运算符重载》由会员分享,可在线阅读,更多相关《轻松学c#之运算符重载(24页珍藏版)》请在金锄头文库上搜索。

1、第9章 运算符重载C#允许用户根据所创建的类来定义运算符的 含义,该过程称为运算符重载。通过重载运算 符,可以扩展运算符在类中的作用。运算符重 载的优点是:它允许将新的类类型无缝隙地整 合进用户自己的编程环境中,这种类型扩展是 面向对象语言包括C#的一种重要功能。本章 将详细讲解运算符重载的使用。9.1 什么是运算符重载运算符重载是根据用户所创建的类来定义运算符的含 义。这样运算符的作用完全由用户决定,同时类和类之 间的运算符含义可以不同。换句话说,通过运算符的重 载改变了运算符运算的规则,可以扩展运算符在类中的 作用。通常情况下,运算符只允许数与数、数与数据和数据与 数据之间的运算。通过运算

2、符的重载,不同类型的对象 都可以进行运算。如下图所示,在教师类Teacher中,通过教师级别的增加,其 相应属性也会改变。一般的运算符不能满足这种运算,所以 就必须重新定义运算符的规则,这样就产生了运算符的重 载。它能让我们更方便的使用不同的运算符。9.2 如何重载运算符运算符重载是一个特殊的方法。其语法形式如下图所示。其中,运算符重载方法的访问修饰符必须是public;该方法必 须是静态方法;public和static满足一个,就可以了;operator 是运算符重载的关键字;op表示要重载的运算符;参数列表 表示调用该方法所要传递的参数。【示例9-1】以下代码演示对Team类实现加号运算符

3、的重载。public static是修饰符。Team表示运算的结果类型。operator是 运算符重载的关键字。oper1和oper2是Team类类型的两个参 数。注意:该参数类型必须是对象或者结构。如果不是,会提示 如下错误信息:运算符的参数必须是包含类型。9.2.1 一元运算符重载一元运算符只有一个操作数。常见的一元运算符包括非运算 (-)、自增运算符(+)和自减运算符(-)。一元运算符 重载语法如下图所示。【示例9-2】定义了一个银行账号类Program。通过将非运算 符(-)重载,实现将银行账号金额清空的功能。其中,参数必须是对象或者结构类型,否则会提示错误信息 :一元运算符的参数必须

4、是包含类型。【示例9-3】定义了一个银行卡类Program。通过自增运 算符重载,实现银行卡升级的功能。【示例9-4】定义了一个人年龄的类Program。通过自减 运算符重载,实现这个公司的级别的查看。重载自增与自减运算符,只需要返回自增或自减的值, 但不改变主调对象。其中,应特别主意前缀和后缀的区 别。9.2.2 二元运算符重载二元运算符的重载与一元运算符的重载类似。常见的二元运 算符有加法(+)、减法()。二元运算符重载格式如下图 所示。【示例9-5】介绍通过定义类Program。利用重载二元运算符 加法(+)运算将整型值加到Program类型对象的各个坐标上 ,实现坐标轴的平移。示例9-

5、5中将运算符“+”重载,给原本的“+”赋予另一层含义, 即将各个x轴、y轴、z轴都相加。实现了坐标轴的平移。9.3 关系运算符重载关系运算符,如“=”或“”,也可以重载。重载关系运算符返 回true或false值。重载后的关系运算符可以用于条件表达式。 关系运算符重载必须对他们成对重载。例如,如果重载=运 算符,那么就必须重载!=运算符。成对重载的运算符有: “=”和“!=”、“”、“=”和“”,判断三个对象的大小,输出 最大对象。在该例中,返回数据类型必须是bool,否则会提示错误。错 误信息如下:无法将类型”bool”隐式转换为”重载关系运算符.Program”而且,如果重载“”运算符,否

6、 则编译器会报错。错误信息如下:运算符”重载关系运算符.Program.operator (重载关系运算符. Program,重载关系运算符.Program)”要求也要定义匹配的运算 符” = is 7条件等= != 8位逻辑 与& 9位逻辑 异或 10位逻辑 或| 11条件与& 12条件或 13条件?: 14赋值= *= /= %= += = = &= = |=【示例9-13】演示了重载后运算符的优先级。在该例中,程序在运行时首先重载“*”,运行结果为1; 其次重载“+”,运行结果2;最后运行表达式,输出结 果。9.7.2 不能重载的运算符运算符,可以分为一元、二元和三元运算符,在它 们中有一些可以重载,但还有一些并不能,不可以 重载的运算符包括:赋值运算符和复合赋值运算符(=、=+、/=和%=等)条件运算符(&、|和三元运算符?:)句点运算符(.)调用运算符(())checked和unchecked运算符new运算符typeof运算符as和is运算符数组运算符()9.8 小结本章主要介绍了运算符的重载,其中包括一元 运算符重载、二元运算符重载、关系运算符重 载、true和false重载和逻辑运算符重载,以及 运算符转换。其中重点是一元和二元运算符重 载,难点是短路运算符的使用,希望大家好好 理解。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号