< 返回技术文档列表

C#中如何实现运算符重载

发布时间:2021-09-01 01:54:57⊙投诉举报

这期内容当中小编将会给大家带来有关C#中如何实现运算符重载,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

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

public class Merchandise{  public int Count { get; set; }  public string Name { get; set; }  public double UnitPrice { get; set; }  }然后来实现订单类  public class Order  {  public double TotalPrices { get; set; }  public List<Merchandise> Merchadises { get; set; }  public static Order operator +(Order a, Order b){  Order newnewOrder = new Order(){  TotalPrices = a.TotalPrices + b.TotalPrices  };  newOrder.Merchadises.AddRange(a.Merchadises);  newOrder.Merchadises.AddRange(b.Merchadises);  return newOrder;  }  }

下面是客户端调用代码

Order o1 = new Order { TotalPrices = 500.0 };  o1.Merchadises.AddRange  new List<Merchandise>{  new Merchandise{Name = "肥皂",Count=100,UnitPrice=3},  new Merchandise{Name = "毛巾",Count=100,UnitPrice=2}  }  Order o2 = new Order { TotalPrices = 8000.0 };  o1.Merchadises.AddRange  new List<Merchandise>{  new Merchandise{Name = "电视",Count=5,UnitPrice=1000},  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#中如何实现运算符重载了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注血鸟云行业资讯频道。


/template/Home/Zkeys/PC/Static