C#一元运算重载的深入理解

using System;
using System.Diagnostics;
using System.Text;
using System.Collections;
using System.Collections.Generic;
delegate string DTE(int x, string s);class MYTestX
{public class CDT{public CDT(int x){this.x = x;}int x = 10;//类型转换只能是public static implicit形式或public static explicit形式//,这里的implicit与explicit并不是返回值类型,而是修饰符,说明是隐式转换还是显式转换//因此不能写成public static bool operator bool(CDT odt)这样的形式,编译会出错//应用场景 //1: CDT ot = new CDT(); if(ot){}//2: CDT ot = new CDT(); bool b = ot;public static implicit operator bool(CDT odt){Console.WriteLine("operator bool------------------");return odt != null;}//应用场景://CDT ot = new CDT(); string s = (string) otpublic static explicit operator string(CDT odt){Console.WriteLine("operator string------------------");return odt.ToString();}//应用场景://CDT ot = new CDT(); string s = otpublic static implicit operator int(CDT odt){Console.WriteLine("operator string------------------");return odt.x;}//重载 true false运算符(注意的MSDN文档说明中说true和false是运算符,就像 +,-普通运算符一样)//两者必须一起重载。其实就相当于重载一个bool运算符的效果, 并不完全等价//应用场景://CDT ot = new CDT(); if(ot){}//不能用于: CDT ot = new CDT();  bool b = ot; bool b2 = (bool)ot;public static bool operator true(CDT odt){return odt != null;}public static bool operator false(CDT odt){return odt == null;}}class CDTX { }//public void TestLimitX(CDTX ot)//编译错误:CDTX的访问权限不能小于TestLimitX的访问权限//{//}public static void TestLimit(CDT ot)//可以访问
    {if (ot) { }//调用operator turebool b = ot;//调用operator bool,若无此重载,则编译错误,并不会调用operator ture 或ooperator falsestring st = (string)ot; //可以转换,调用重载的显示的string转换运算符CDTX otx = new CDTX();//string stx = (string)otx; //编译出错,不能转换
        Console.WriteLine(b);}static void Main(string[] args){TestLimit(new CDT(112));}}

posted on 2016-11-12 14:42 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

C#一元运算重载的深入理解相关推荐

  1. Java中关于Arrays.sort的两种重载方法的理解

    前言 在java中重载排序方法的方法目前有两种,一种是实现Comparable接口的compareTo方法,还有一种是用比较器(comparator) 作为参数,其中比较器是实现了Comparator ...

  2. C++ 覆盖方法、重载方法的理解

    辨析 覆盖 如何覆盖?覆盖就是将基类的方法,在子类重新声明一次,然后再改写一下它的实现代码. 名称.参数.返回值都必须与原方法相同 重载 重载,是同一类中,方法名相同,参数列表不同的一组方法的定义. ...

  3. 17.C#类型判断和重载决策(九章9.4)

    今天来结束第九章,聊下我们经常忽略,但是编译器会帮我们完成的"类型判断和重载决策",理解编译器如何帮我们完成,相信在写代码时会更明确,避免一些编译出错,排查的问题,让我们开发更给力 ...

  4. 关于重载函数的一些学习

    重载函数 出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数. 使用某种程序设计语言编写过算术表达式的程序员都肯定使用过重载函数.表达式 1 + 3 调用了针对整型操作数加法 ...

  5. [转载] Java Challengers#1:JVM中的方法重载

    参考链接: Java中自动装箱和扩展的方法重载 欢迎来到新的Java Challengers博客!本博客致力于挑战Java编程中的概念.掌握它们,你将成为一名技术娴熟的Java程序员. 本博客中的技术 ...

  6. C++多态如何理解?实现多态性呢?多态性的作用呢?

    C++多态性: 简单理解"一个接口,多种方法"."允许将派生类类型的指针赋值给基类类型的指针" 将基类指针指向派生类对象,通过基类指针调用派生类的成员函数来执行 ...

  7. 【C++】Google C++编码规范(四):其他C++

    引用参数 所有按引用传递的参数必须加上const; 这在Google Code上是一个硬性约定:输入参数是值参或const的引用参数,输出参数为指针,输入参数可以是```const`指针,但决不能是非 ...

  8. 《JavaScript高级程序设计》(第2版)上市

      本书是技术畅销书<JavaScript高级程序设计> 的第2版,几乎全部更新.重写 了上一版的内容,融入了作者近几年来奋战在前端开发一线的宝贵经验 , 是学习和提高JavaScript ...

  9. C++实用技巧(三)

    复杂的东西写多了,如今写点简单的好了.由于功能上的需要,Vczh Library++3.0被我搞得很离谱.为了开发维护的遍历.减少粗心犯下的错误以及增强单元测试.回归测试和测试工具,因此记录下一些开发 ...

最新文章

  1. 和远程ip_漏洞Microsoft Windows TCP/IP 远程执行代码漏洞威胁通告
  2. boost::smart_ptr模块智能指针测试程序
  3. python调用api应用接口_Python接口测试之urllib2库应用
  4. Java开发笔记(八十六)通过缓冲区读写文件
  5. Mysql访问中间件--Atlas初探
  6. zabbix自定义监控nginx
  7. 面试官:new Object[5] 一共创建了几个对象?
  8. 物联网安全行业调研报告 - 市场现状分析与发展前景预测
  9. php计算macd,macd计算公式?MACD指标的原理是什么
  10. 采用Armjio非精确线搜索准则的最速下降法--MATLAB实现
  11. php revel,golang,revel_Revel 的路由问题,golang,revel - phpStudy
  12. php调用shell执行scp,使用shell脚本自动执行scp文件传输
  13. web前端开发常用的10个高端CSS UI开源框架
  14. vivox21支持html,vivo X21支持快充吗_vivo X21支持无线充电吗-太平洋IT百科
  15. 自制表情包!android,PicsArt定制专属表情包-PicsArt表情包自制软件下载-乐游网安卓下载...
  16. MATLAB之function函数
  17. 【youcans 的 OpenCV 例程200篇】129. 形态算法之骨架 (重建开运算)
  18. Synopsys Detect for Jenkins 插件配置
  19. AI Chip(一)
  20. 【Python学习笔记(一)—— 初识Python】

热门文章

  1. Redis中通过bat获取指定前缀开头的所有键值对并输出保存到文件中
  2. Windows中启动Redis走配置文件的bat脚本
  3. 信息系统项目管理师-信息系统安全管理核心知识思维脑图
  4. AndroidStudio打开新项目后解决下载某版本gradle慢的问题
  5. ASP.NET中新建Web网站并部署到IIS上(详细图文教程)
  6. Windows与Linux系统分隔符不一致,java轻松实现区分
  7. Python中遍历字符串和字典
  8. SSM+BJUI实现CRUD的报表功能
  9. 'pip3' 不是内部或外部命令,也不是可运行的程序或批处理文件
  10. python 多分类逻辑回归_机器学习实践:多分类逻辑回归(softmax回归)的sklearn实现和tensorflow实现...