闲来无事,突发奇想,c#提供的基本类型可以进行运算符操作,那么自己创建的类型应该也可以进行运算符操作吧?
既然有了想法就要尝试着去实现,打开《csharp language specification》,寻找方案。
在这里说明一下《csharp language specification》这个手册,真心不错。
c#语言规范(csharp language specification doc)
一个微软官方的说明文档。
当你安装完visual studio的以后,默认安装目录下就会有这个东西,一般在 c:\program files\microsoft visual studio 10.0\vc#\specifications\2052 下
可重载的一元运算符 (overloadable unary operator) 有:
+ - ! ~ ++ -- true false
可重载的二元运算符 (overloadable binary operator) 有:
+ - * / % & | ^ << >> == != > < >= <=
有了相应的知识就练练手做一个案例吧,这里我做了一个 学生+学生 return 新的学生 的案例,xixi。
1 class program 2 { 3 static void main(string[] args) 4 { 5 //实例化一个男孩 6 student boy = new student() { sex = true }; 7 //实例化一个女孩 8 student girl = new student() { sex = false }; 9 student student = boy + girl; 10 console.writeline($"哇! 是个{(student.sex?"男":"女")}孩"); 11 console.readkey(); 12 } 13 14 } 15 class student { 16 public bool sex { get; set; } 17 public static student operator +(student stu1, student stu2) 18 { 19 //当sex不同的时候相加才能放回一个student 20 if (stu1.sex != stu2.sex) 21 { 22 random random = new random(); 23 //返回一个随机性别的student 24 return new student() { sex = (random.next(2) == 0) }; 25 } 26 return null; 27 } 28 public static student operator !(student student) 29 { 30 //转变sex 31 return new student() { sex=!student.sex }; 32 } 33 }
如对本文有疑问, 点击进行留言回复!!
树莓派4 Ubuntu18.04安装xubuntu桌面 无线WIFI 及 ros melodic(解决apt update error,安装xubuntu error问题)
网友评论