分类目录

链接

2012年 5月
 123456
78910111213
14151617181920
21222324252627
28293031  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > .NET > 正文
C#.NET使用operator重载操作符
.NET 评论(2) 阅读(5,538)

 

C#.NET使用operator重载操作符

业务需求:

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

 

一般实现如下:

  1. User user1 = new User();
  2. user1.Name = "张三";
  3. user1.Money = 20;
  4.  
  5. User user2 = new User();
  6. user2.Name = "李四";
  7. user2.Money = 15;
  8.  
  9. //将两个对象相加,得到用户名和金额合计
  10. User user3 = new User();
  11. user3.Name = user1.Name +","+ user2.Name;
  12. user3.Money = user1.Money + user2.Money;
  13.  
  14. //打印结果:
  15. //user3.Name :“张三,李四”
  16. //user3.Moeny:“35”;

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

User user3 = user1 + user2;

或者说

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

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

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

 

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

  1.  /// <summary>
  2.         /// 将操作符+重载
  3.         /// </summary>
  4.         /// <param name="user1">用户1</param>
  5.         /// <param name="user2">用户2</param>
  6.         /// <returns></returns>
  7.         public static User operator +(User user1, User user2)
  8.         {
  9.             User retUser = new User();
  10.             retUser.Name = user1.Name +","+ user2.Name;
  11.             retUser.Money = user1.Money + user2.Money;
  12.             return retUser;
  13.         }

完整Demo代码2个cs文件:

 

  1. //Main.cs
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6.  
  7. namespace OperatorDemo
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             //创建对象“张三”
  14.             User user_z = new User();
  15.             user_z.Name = "张三";
  16.             user_z.Money = 100;
  17.  
  18.             //创建对象“李四”
  19.             User user_l = new User();
  20.             user_l.Name = "李四";
  21.             user_l.Money = 50;
  22.  
  23.             //将“张三”和“李四”相加
  24.             User sumUser = user_z + user_l;
  25.  
  26.             //打印出相加后的结果
  27.             Console.WriteLine("姓名:"+sumUser.Name);
  28.             Console.WriteLine("持有金额:"+ sumUser.Money);
  29.  
  30.             Console.ReadLine();
  31.         }
  32.     }
  33. }

  34.  
  35.  
  36. //User.cs
  37.  
  38.  
  39. using System;
  40. using System.Collections.Generic;
  41. using System.Text;
  42.  
  43. namespace OperatorDemo
  44. {
  45.     public sealed class User
  46.     {
  47.         /// <summary>
  48.         /// 用户姓名
  49.         /// </summary>
  50.         public string Name { get; set; }
  51.         
  52.         /// <summary>
  53.         /// 用户持有金额
  54.         /// </summary>
  55.         public decimal Money { get; set; }
  56.  
  57.         /// <summary>
  58.         /// 将操作符+重载
  59.         /// </summary>
  60.         /// <param name="user1">用户1</param>
  61.         /// <param name="user2">用户2</param>
  62.         /// <returns></returns>
  63.         public static User operator +(User user1, User user2)
  64.         {
  65.             User retUser = new User();
  66.             retUser.Name = user1.Name +","+ user2.Name;
  67.             retUser.Money = user1.Money + user2.Money;
  68.             return retUser;
  69.         }
  70.     }
  71. }

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

附上完整项目源码:http://files.cnblogs.com/andrew-blog/OperatorDemo.rar

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:C#.NET使用operator重载操作符 | Bruce's Blog

C#.NET使用operator重载操作符:目前有2 条留言

  1. 数据库之家 : 2012年05月30日下午 8:09 回复

    http://115.com/file/c282b264

  2. 数据库之家 : 2012年05月31日上午 10:31 回复

    http://115.com/file/c28kpt6l#
    《数据结构》课程个性化在线学习系统研究.doc

发表评论

留言无头像?