C#_运算符重载 operator
函数重载就是把某个函数表现为新的状态 运算符重载就是把运算符重写 实现新的功能
在类中重载
“==” 运算符重载(“==” 与 “!=”是一对运算符,重载其中一个,另一个也要重载)
internal class Class1{public int Age { get; set; }public string Name { get; set; }public int Id { get; set; }public Class1(int age, string name, int id){Age = age;Name = name;Id = id;}//运算符重载//Console.WriteLine(c1 == c2);public static bool operator ==(Class1 a, Class1 b){if (a.Age == b.Age && a.Name == b.Name && a.Id == b.Id){return true;}return false;}// a != b public static bool operator !=(Class1 a, Class1 b){return !(a == b);}}
使用运算符重载 比较对象中的数据 默认比较的是 地址 而运算符重载是通过定义的方法逻辑进行比较的
static void Main(string[] args){Console.WriteLine(1==1);//trueClass1 c1 = new Class1(18, "张三", 12345);Class1 c2 = new Class1(18, "张三", 12345);Console.WriteLine(c1 == c2);//false 不一样的原因 c1 与 c2 比较的是堆内存中的地址 Class1 c3 = c1;Console.WriteLine(c3 == c1); // true Console.WriteLine(c1 != c2);//使用运算符重载 比较对象中的数据 默认比较的是 地址 而运算符重载是通过定义的方法逻辑进行比较的Console.WriteLine(c1 == c2);Console.WriteLine(c1 != c2);}
示例:将“+”重载为“-”
Class1中
public static int operator +(Class1 a, Class1 b){return a.Age -b.Age ;}
Main中
Console.WriteLine(c1+c2);