当我们在对比两个引用类型的变量时:==和!=是比较两个对象的地址,往往是不相同的,但有时我们只要其中的字段相同时就希望他们相等,这是就需要运算符的重运载。
语法:public static 返回值类型 operator 运算符(参数列表)
{
}
class Coordination
{//坐标字段
public int x;
public int y;
public int z;
//构造函数初始化
public Coordination(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
}
//重运载定义,==,!=要成对使用,否则定义了==,不定义!=,当出现!=的情况就不知所措了
public static bool operator ==(Coordination coordination1, Coordination coordination2)
{
return coordination1.x == coordination2.x && coordination1.y == coordination2.y && coordination1.z == coordination2.z;
}
public static bool operator !=(Coordination coordination1, Coordination coordination2)
{
return coordination1.x != coordination2.x || coordination1.y != coordination2.y || coordination1.z != coordination2.z;
}
internal class Mainclus
{
public static void Main(string[] args)
{
Coordination coordination1 = new Coordination(1, 3, 5);
Coordination coordination2 = new Coordination(1, 3, 5);
//如果没有重运载,这个时false,尽管字段相同,但是对象的地址时不同的。
Console.WriteLine(coordination1 == coordination2);
}
}