1. 程式人生 > 實用技巧 >過載運算子

過載運算子

========================================運算子過載

-------------------------------------------------------------------------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();

wKioL1PaTgSi2TABAAKoj1NHZUM361.jpg

轉載於:https://blog.51cto.com/962410314/1533446