博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在C#中的operator重载操作符
阅读量:7021 次
发布时间:2019-06-28

本文共 2388 字,大约阅读时间需要 7 分钟。

业务需求:

在程序中要求将两个用户的用户名和他们的持有金额的相加,如何来实现呢?

 

一般实现如下:

User user1 = new User();user1.Name = "张三";user1.Money = 20;User user2 = new User();user2.Name = "李四";user2.Money = 15;//将两个对象相加,得到用户名和金额合计User user3 = new User();user3.Name = user1.Name +","+ user2.Name;user3.Money = user1.Money + user2.Money;//打印结果://user3.Name :“张三,李四”//user3.Moeny:“35”;

试想,能不能将user3那三行代码改为:

User user3 = user1 + user2;

或者说

User userSum = user1 + user2 + user3 + user4 + userN.....

------------------------------------------------------------------

如何实现这个“+”(加号操作符)的重载方法,让我们自己写的一些类型/对象之间可以进行用操作符来写,这样可以大量的简化一些代码。

 

在User类中的“+”(加号操作符)的重载方法如下:

///         /// 将操作符+重载        ///         /// 用户1        /// 用户2        /// 
public static User operator +(User user1, User user2) { User retUser = new User(); retUser.Name = user1.Name +","+ user2.Name; retUser.Money = user1.Money + user2.Money; return retUser; }

 

 

完整Demo代码2个cs文件:

Main.cs

using System;using System.Collections.Generic;using System.Text;namespace OperatorDemo{    class Program    {        static void Main(string[] args)        {            //创建对象“张三”            User user_z = new User();            user_z.Name = "张三";            user_z.Money = 100;            //创建对象“李四”            User user_l = new User();            user_l.Name = "李四";            user_l.Money = 50;            //将“张三”和“李四”相加            User sumUser = user_z + user_l;            //打印出相加后的结果            Console.WriteLine("姓名:"+sumUser.Name);            Console.WriteLine("持有金额:"+ sumUser.Money);            Console.ReadLine();        }    }}

 

User.cs

using System;using System.Collections.Generic;using System.Text;namespace OperatorDemo{    public sealed class User    {        ///         /// 用户姓名        ///         public string Name { get; set; }                ///         /// 用户持有金额        ///         public decimal Money { get; set; }        ///         /// 将操作符+重载        ///         /// 用户1        /// 用户2        /// 
public static User operator +(User user1, User user2) { User retUser = new User(); retUser.Name = user1.Name +","+ user2.Name; retUser.Money = user1.Money + user2.Money; return retUser; } }}

 

 

以及操作可以写其他的操作符重载,比如 - * / == != > >= 等....

附上完整项目源码:

参考:

转载于:https://www.cnblogs.com/andrew-blog/archive/2012/05/30/operator.html

你可能感兴趣的文章
Analysis by Its History Exercise 2.3
查看>>
键盘各种按键对应的ASII码
查看>>
[转载]SharePoint 2013测试环境安装配置指南
查看>>
准备开始学习了。
查看>>
6.简单提取小红书app数据保存txt-2
查看>>
REST FUL架构读后感
查看>>
fushioncharts 使用教程要点---使用JSON数据方式
查看>>
阿里云建站流程
查看>>
NSDateFormatter相关整理
查看>>
Sencha 中文站
查看>>
Cygwin下软件安装 - apt-cyg
查看>>
当安装mongodb客户端出现了Failed to load list of databases
查看>>
python基础--内置函数filter,reduce
查看>>
C 学习笔记
查看>>
20165324 Java实验三 敏捷开发与XP实验
查看>>
hdu 4812 DTree (点分治)
查看>>
2015 多校联赛 ——HDU5289(二分+ST)
查看>>
数据结构与算法-链表
查看>>
Socket原理解析2
查看>>
redis数据过期策略【转】
查看>>