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 Merchadises { get; set; }
  10. public static Order operator +(Order a, Order b){
  11. Order newnewOrder = 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. }
  18. }

下面是客户端调用代码

 
 
 
  1. Order o1 = new Order { TotalPrices = 500.0 };
  2. o1.Merchadises.AddRange
  3. new List{
  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{
  10. new Merchandise{Name = "电视",Count=5,UnitPrice=1000},
  11. new Merchandise{Name = "DVD",Count=5,UnitPrice=600}
  12. }

参数
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#运算符重载

当前文章:C#运算符重载学习总结
本文路径:http://www.hantingmc.com/qtweb/news7/115507.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联