当前位置: 首页 > 编程语言 > C#

如何定义operator==分享

时间:2023-04-10 13:39:51 C#

如何定义operator==放;}publicintY{得到;放;}}如何定义重载操作==以便我可以使用以下语句:Numbern1=newNumber{X=10,Y=10};数字n2=新数字{X=100,Y=100};if(n1==n2)Console.WriteLine("equal");elseConsole.WriteLine("不等于");//根据评论在下面更新//这是一个进一步的问题:在我看来,C#没有与C++相同的运算符重载。在C++中,这个重载运算符被定义为目标类之外的独立函数。在C#中,这个重载函数实际上是嵌入到目标类中的。有人可以就这个话题给我一些评论吗?谢谢usingSystem;使用System.Collections.Generic;使用System.Linq;使用系统文本;namespaceConsoleApplication3{publicclassNumber{publicintX{get;放;}publicintY{得到;放;}publicNumber(){}publicNumber(intx,inty){X=x;Y=Y;}publicstaticbooloperator==(Numbera,Numberb){return((aX==bX)&&(aY==bY));}publicstaticbooloperator!=(Numbera,Numberb){return!(a==b);}publicoverridestringToString(){returnstring.Format("X:{0};Y:{1}",X,Y);}publicoverrideboolEquals(objectobj){varobjectToCompare=objasNumber;如果(objectToCompare==null)返回false;返回this.ToString()==obj.ToString();}publicoverrideintGetHashCode(){returnthis.ToString().GetHashCode();}}classProgram{staticvoidMain(string[]arg){Numbern1=newNumber{X=10,Y=10};Numbern2=newNumber{X=10,Y=10};如果(n1==n2)Console.WriteLine("equal");elseConsole.WriteLine("不等于");控制台.ReadLine();}}}publicstaticbooloperator==(YourClassTypea,YourClassTypeb){//进行比较两者都为null,或者两者都是同一个实例,返回true。如果(System.Object.ReferenceEquals(a,b)){返回真;}//如果一个为空,但不是两个都为空,则返回false。if(((object)a==null)||((object)b==null)){返回false;}//如果字段匹配则返回真:returnax==bx&&ay==by&&az==bz;}publicstaticbooloperator!=(ThreeDPointa,ThreeDPointb){return!(a==b);这是一个简短的示例,但我强烈建议阅读重载Equals()和Operator=指南(C#编程指南)以了解Equals()和==等之间的交互。publicclassNumber{publicintX{get;放;}publicintY{得到;放;}publicstaticbooloperator==(Numbera,Numberb){//TODO}}自己重载运算符:以上是C#学习教程:如何定义运算符==所有内容分享,如果对你有用和你需要多了解C#学习教程,希望你多多关注——publicstaticbooloperator==(Numbera,Numberb){//dostuffreturntrue/false;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: