C#-运算符重载
关键词:operator
语法:
public static void operator 运算符(参数列表){}
作用:让自定义类或结构体对象,可以使用运算符进行运算
注意:
-
参数的数量:与所重载的运算符的运算规则有关。如加法只能有2个参数
-
条件运算符需要配对实现:一旦重载了==,就必须重载!=
-
一个符号可以多个重载
-
不能用ref和out
特点:
-
一定是一个公共的静态方法
-
返回值写在operator前
-
逻辑处理自定义
不可重载的运算符
逻辑与(&&) 逻辑或(||)
索引符 []
强转运算符 ()
特殊运算符
点. 三目运算符? : 赋值符号=
参数的类型:必须有一个参数跟返回值的参数一样
示例
class Student
{
private int age; private string name;
public Student (int age,string name)
{
this.age=age; this.name=name;
}
//重载
public static bool operator == (Student s1,Student s2)
{
if(s1.age==s2.age && s1.name==s2.name)
return true;
else
return false;
}
//重载 //一旦重载了==,就必须重载!=
public static bool operator != (Student s1,Student s2)
{
bool result s1==s2; //调用了上面的重载运算符
return !result;
}
//调用
Main()
{
Student s1=new Student(17,"张三");
Student s2=new Student(17,"张三");
Console.WriteLine(s1==s2);
//重载前:返回false,∵比较的是在栈中存储的内存地址
//重载后:返回true
}
}