C#运算符重载学习总结

 


  • 本文介绍C#运算符重载是个不常出现的应用,同时也是个好玩的东西,我们可以使用一下方法来实现这样的需求。
  •  

    C#运算符重载是个不常出现的应用,同时也是个好玩的东西。

    我们可以使用他来实现这样的需求:

    当一个订单与另外一个订单相加形成一个新的订单。新订单的货物为两个订单的货物的并集,总价为两个订单的总价和。下面实现看看,先做个辅助的货物类

       
       
    1. public class Merchandise{  
    2. public int Count { get; set; }  
    3. public string Name { get; set; }  
    4. public double UnitPrice { get; set; }  
    5. }然后来实现订单类  
    6. public class Order  
    7. {  
    8. public double TotalPrices { get; set; }  
    9. public List < Merchandise >  Merchadises { get; set; }  
    10. public static Order operator +(Order a, Order b){  
    11. Order  new newOrder  = new Order(){  
    12. TotalPrices  = a.TotalPrices + b.TotalPrices  
    13. };  
    14. newOrder.Merchadises.AddRange(a.Merchadises);  
    15. newOrder.Merchadises.AddRange(b.Merchadises);  
    16. return newOrder;  
    17. }  

    下面是客户端调用代码

       
       
    1. Order  o1  =  new  Order {  TotalPrices  =  500 .0 };  
    2. o1.Merchadises.AddRange  
    3. new List < Merchandise > {  
    4. new Merchandise{ Name  =  "肥皂" Count = 100 UnitPrice = 3 },  
    5. new Merchandise{ Name  =  "毛巾" Count = 100 UnitPrice = 2 }  
    6. }  
    7. Order  o2  =  new  Order {  TotalPrices  =  8000 .0 };  
    8. o1.Merchadises.AddRange  
    9. new List < Merchandise > {  
    10. new Merchandise{ Name  =  "电视" Count = 5 UnitPrice = 1000 },  
    11. new Merchandise{ Name  =  "DVD" Count = 5 UnitPrice = 600 }  

    参数
    result-type运算符的结果类型。
    unary-operator下列运算符之一:+ - ! ~ ++ — true false
    op-type第一个(或唯一一个)参数的类型。
    operand第一个(或唯一一个)参数的名称。
    binary-operator其中一个:+ - * / % & | ^ << >> == != > < >= <=
    op-type2第二个参数的类型。
    operand2第二个参数的名称。
    conv-type-out类型转换运算符的目标类型。
    conv-type-in类型转换运算符的输入类型。

    备注

    前两种形式声明了用户定义的内置C#运算符重载。注意,并非所有内置运算符都可以被重载(请参见可重载的运算符)。op-type 和 op-type2 中至少有一个必须是封闭类型(即运算符所属的类型)。例如,这将防止重定义整数加法运算符。

    后两种形式声明了转换运算符。conv-type-in 和 conv-type-out 中正好有一个必须是封闭类型(即,转换运算符只能从它的封闭类型转换为其他某个类型,或从其他某个类型转换为它的封闭类型)。

    运算符只能采用值参数,不能采用 ref 或 out 参数。

    任何运算符声明的前面都可以有一个可选的属性(C# 编程指南)列表。以上介绍C#运算符重载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值