過載運算子
阿新 • • 發佈:2020-10-09
========================================運算子過載
-------------------------------------------------------------------------Vector.cs
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; namespaceConsoleApplication4 { publicstructVector//結構和類是相似的 { publicintx,y,z; publicVector(intx,inty,intz)//建構函式 { this.x=x; this.y=y; this.z=z; } publicVector(Vectorv)//建構函式 { this.x=v.x; this.y=v.y; this.z=v.z; } publicoverridestringToString()//過載tostring方法 { returnstring.Format("x:{0};y:{1};z:{2}",x,y,z); } //過載運算子 //第一個引數是運算子左邊的,第二個引數是運算子右邊的 //+-*/是一樣的 publicstaticVectoroperator*(Vectorlhs,Vectorrhs) { Vectorv=newVector(lhs); v.x*=rhs.x; v.y*=rhs.y; v.z*=rhs.z; returnv; } } }
-------------------------------------------------------------------------主程式
Vectorv1=newVector(1,2,3); Vectorv2=newVector(3,2,1); Console.WriteLine((v1*v2).ToString());//輸出x:3;y:4;z:3 Console.ReadKey();
========================================比較運算子過載
-------------------------------------------------------------------------Vector.cs
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; namespaceConsoleApplication4 { publicstructVector//結構和類是相似的 { publicintx,y,z; publicVector(intx,inty,intz)//建構函式 { this.x=x; this.y=y; this.z=z; } publicVector(Vectorv)//建構函式 { this.x=v.x; this.y=v.y; this.z=v.z; } publicoverridestringToString()//過載tostring方法 { returnstring.Format("x:{0};y:{1};z:{2}",x,y,z); } //過載比較運算子 //==與!=需成對出現 //>與<需成對出現 //>=與<=需成對出現 publicstaticbooloperator==(Vectorlhs,Vectorrhs) { Vectorv=newVector(lhs); if(v.x==rhs.x&&v.y==rhs.y&&v.z==rhs.z) { returntrue; } else { returnfalse; } } //過載比較運算子 publicstaticbooloperator!=(Vectorlhs,Vectorrhs) { return!(lhs==rhs); } } }
-------------------------------------------------------------------------主程式
Vectorv1=newVector(1,2,3); Vectorv2=newVector(1,2,3); Console.WriteLine(v1==v2);//true Console.ReadKey();
轉載於:https://blog.51cto.com/962410314/1533446