很多人会到论坛上问 ClassA + ClassB 为什么会报错,结构都一样,为什么会错,microsoft怎么那么笨。
原因就在这里了,你应该告诉C# 你要怎么加,重载运算符就是告诉他,+法是这样做地。。。下面是我写的一个重载运算符+的一个例子
测试代码
我们可以得到11 和12 两个结果,这样就可以对自定义类进行加法运算了。需要注意的是 重载运算符的定义 基本可以用于单、双目运算符,逻辑运算符不能重载(&&,||) 赋值运算符不能重载(+=,-=...)
public static MyClass operator + 的定义必须是static的,不能为其他定义.方法必须命名 operator 符号
关于转换运算符 是自定义类互相转换时非常重要的的一个功能。打个不恰当的比方:一个类是男孩,一个类是男人,怎么样把男孩转成男人呢。。。
转换运算符的定义与重载运算符的定义相似,下面给出转换运算符的例子,延用上面的MyClass在,再定义一个MyBestClass,建立转换运算符,实现MyClass到MyBestClass的转换
测试代码如下
结果是10,20
static是必须的 ,operator 名字也是固定的,可变只有explicit
explicit表示显式转换,如其意思一样,操作的时候程序员明显知道这个类被转换了.
还有一个种是 隐式转换 implicit
如果
实际运用来说,显式运算符更有用,因为更明显,可以让程序员引起一定的关注。
上面就是我对重载运算符和转换运算符的一些个人理解,如果偏差,大家不要砸我臭鸡蛋,直接扔烧鸡好了,希望对大家有点帮助