当前位置: 首页 > news >正文

C#的operator运算符定义

自定义类型可以使用operator扩展,如显式类型转换、隐式类型转换、操作符重载等,可以让我们的自定义类和C#提供的类型操作尽可能保持一致,简化逻辑代码。

        private void button4_Click(object sender, EventArgs e){ParamA paramA = (ParamA)0x1A2B3C4D;paramA++;Trace.Assert(paramA.First8Bit == 0x1A + 1);Trace.Assert(paramA.Second8Bit == 0x2B + 1);Trace.Assert(paramA.Third8Bit == 0x3C + 1);Trace.Assert(paramA.Last8Bit == 0x4D + 1);ParamA paramB = (ParamA)0x01010101;var parramC = paramA + paramB;Trace.Assert(parramC.First8Bit == 0x1A + 2);Trace.Assert(parramC.Second8Bit == 0x2B + 2);Trace.Assert(parramC.Third8Bit == 0x3C + 2);Trace.Assert(parramC.Last8Bit == 0x4D + 2);Trace.Assert(paramA != paramB);}public class ParamA{public byte First8Bit { get; set; }public byte Second8Bit { get; set; }public byte Third8Bit { get;set; }public byte Last8Bit { get; set; }/// <summary>/// 隐式类型转换定义 从int得到ParamA实例/// ParamA paramA = 0x1A2B3C4D;/// 和显式类型转换二选一/// </summary>//public static implicit operator ParamA(int value)//{//    return new ParamA { First8Bit = (byte)(value >> 24), Second8Bit = (byte)((value >> 16) & 0xFF), Third8Bit = (byte)((value >> 8) & 0xFF), Last8Bit = (byte)(value & 0xFF) };//}//ParamA paramA = 0x1A2B3C4D;/// <summary>/// 显式类型转换定义 从int得到ParamA实例/// ParamA paramA = (ParamA)0x1A2B3C4D;/// 和隐式类型转换二选一/// </summary>/// <param name="value"></param>public static explicit operator ParamA(int value) {return new ParamA { First8Bit = (byte)(value >> 24), Second8Bit = (byte)((value >> 16) & 0xFF), Third8Bit = (byte)((value >> 8) & 0xFF), Last8Bit = (byte)(value & 0xFF) };}public static ParamA operator++(ParamA paramA){return new ParamA { First8Bit = (byte)(paramA.First8Bit + 1), Second8Bit = (byte)(paramA.Second8Bit + 1), Third8Bit = (byte)(paramA.Third8Bit + 1), Last8Bit = (byte)(paramA.Last8Bit + 1)};}public static ParamA operator+(ParamA paramA, ParamA paramB){return new ParamA { First8Bit = (byte)(paramA.First8Bit + paramB.First8Bit), Second8Bit = (byte)(paramA.Second8Bit + paramB.Second8Bit), Third8Bit = (byte)(paramA.Third8Bit + paramB.Third8Bit), Last8Bit = (byte)(paramA.Last8Bit + paramB.Last8Bit) };}public static bool operator==(ParamA paramA, ParamA paramB){return paramA.First8Bit == paramB.First8Bit&& paramA.Second8Bit == paramB.Second8Bit&& paramA.Third8Bit == paramB.Third8Bit&& paramA.Last8Bit == paramB.Last8Bit;}public static bool operator!=(ParamA paramA, ParamA paramB){return paramA.First8Bit != paramB.First8Bit|| paramA.Second8Bit != paramB.Second8Bit|| paramA.Third8Bit != paramB.Third8Bit|| paramA.Last8Bit != paramB.Last8Bit;}}

http://www.dtcms.com/a/529208.html

相关文章:

  • 南通网站建设论文网站上传用什么软件做视频格式
  • ftp备份网站wordpress进管理员密码
  • 【移动语义】C++ 移动语义的秘传心法
  • 网站营销的优势电商app系统开发公司
  • 电影wordpress福州搜索优化行业
  • 中国建设银行网站软件下载工厂招聘信息
  • 能耗在线监测系统助企业实时监测管理能耗,提升能源利用率
  • 怎么根据别人的网站做自己的网站片头制作网站
  • Python3 标准库概览
  • 从 Transformer 理论到文本分类:BERT 微调实战总结
  • 基于Python利用正则表达式将英文双引号 “ 替换为中文双引号 “”
  • rwqsd
  • 个人网站 建站前端网站优化
  • 【Linux】深入浅出 Linux 自动化构建:make 与 Makefile 的实用指南
  • 六安市城乡建设网站沧州百姓网免费发布信息网
  • 俱乐部网站php源码网站构建的工作
  • 【AI论文】机器人学习:教程
  • 普宁网站建设django做网站和js做网站
  • 物联网共享棋牌室:无人值守与24H营业下的轻量化运营实战!
  • Go Web 编程快速入门 07.3 - 模板(3):Action、函数与管道
  • 专业的培训行业网站制作北京网站建设一条龙
  • Spring Bean定义继承:配置复用的高效技巧
  • 湖北网站建设专家本地搭建linux服务器做网站
  • 龙华建网站百度账号官网
  • Python高效爬虫:使用twisted构建异步网络爬虫详解
  • 做爰片的网站公司企业网络宣传设计方案
  • 基于鸿蒙UniProton的PLC控制系统开发指南
  • 建设部网站查询造价师证件地方门户网站的前途
  • 【案例实战】HarmonyOS SDK新体验:利用近场能力打造无缝的跨设备文件传输功能
  • AI边缘设备时钟设计突围:从ppm级稳定到EMC优化的全链路实践