operator 只要是运算符都能重载
operator 关键字的主要作用是用来重载运算符的,还可以用于类或结构中类型的自定义转换。
下面看个例子
class Feige { //定义两个全局变量 int a, b; //声明带两个参数的构造函数 public Feige(int a, int b) { this.a = a; this.b = b; } //重载加法运算符+ public static Feige operator +(Feige f, Feige g) { return new Feige(f.a + g.a, f.b + g.b); } //重载乘法运算符* public static Feige operator *(Feige f, Feige g) { return new Feige(f.a * g.a, f.b * g.b); } //自定义转换类型 public static implicit operator int(Feige f) { return (int)(f.a * f.b); } }
//执行构造函数 Feige fei = new Feige(2, 5); //执行构造函数 Feige ge = new Feige(3, 6); int d = (int)(fei + ge);//调用运算符+函数 int e = (int)(fei * ge);//调用运算符*函数 //两对象加法操作结果是:55 richTextBox1.Text += "两对象加法操作结果是:" + d + "\n"; //两对象乘法操作结果是:180 richTextBox1.Text += "两对象乘法操作结果是:" + e + "\n";