什么是重载运算符:利用现有的某种运算符,针对自定义类或结构,定义某种运算操作。
1,不是创造新的运算符,
2,自定义的类或自定义的结构
语法细节:
public static Dog operator +(Dog male,Dog female){ // 返回值是Dog operator + 是重载加法运算符
……
return new Dog();
}
哪些运算符可以用重载运算符:
1,一元运算符和二元运算符可以重载
2,注意:如果是一元运算符,操作数必须是类或者结构 如果是二元运算符,两个操作数至少有一个是类或者结构
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Pet[] pet = new Pet[] { new Cat("Cathy"), new Dog("Jack"), new Dog("Merry") };
for (int i = 0; i < pet.Length; i++)
{
pet[i]++; //程序运行到这里,会自动调用下面的++重载方法
pet[i].ShowAge();
}
}
}
class Pet {
private string name;
private int age;
public string Name { get => name; set => name = value; }
public int Age { get => age; set => age = value; }
public Pet(string name)
{
this.Name = name;
}
public static Pet operator ++(Pet pet) {//public static是必须的,返回Pet类型,采用自增重载
++pet.age;
return pet;
}
public void ShowAge()
{
Console.WriteLine(name+"的年龄:"+age);
}
}
class Dog : Pet {
public Dog(string name):base(name) { }
}
class Cat : Pet {
public Cat(string name) : base(name) { }
}
}