C# operator都什么时候用 5
3个回答
展开全部
用于重载操作符或定义隐式和显示类型转换,如==、!=、>、>=等等。
比如:
class A{ public int ID{get;set;}}
A a = new A();
a.ID = 1;
A b = new A();
b.ID = 1;
bool eq = a==b;//值为false
如果没重载==操作符,将直接比较的引用。如果希望ID相同的两个对象比较为相等,则可以这样重载操作符:
class A{
public int ID{get;set;}
public static bool operator ==(A left, A right)
{
return left.ID==right.ID;
}
//.......
}
A a = new A();
a.ID = 1;
A b = new A();
b.ID = 1;
bool eq = a==b;//值为true
当然,重载了==还应该重载!=,重写Equals等方法。这里只是举个简单的例子就略去了。
上面的例子可能比较抽象,再打个比方说,定义了一个类表示“人”,人有姓名年龄等。希望在比较两个"人"对象的大小时,具体比较他们的年龄。
比如:
class A{ public int ID{get;set;}}
A a = new A();
a.ID = 1;
A b = new A();
b.ID = 1;
bool eq = a==b;//值为false
如果没重载==操作符,将直接比较的引用。如果希望ID相同的两个对象比较为相等,则可以这样重载操作符:
class A{
public int ID{get;set;}
public static bool operator ==(A left, A right)
{
return left.ID==right.ID;
}
//.......
}
A a = new A();
a.ID = 1;
A b = new A();
b.ID = 1;
bool eq = a==b;//值为true
当然,重载了==还应该重载!=,重写Equals等方法。这里只是举个简单的例子就略去了。
上面的例子可能比较抽象,再打个比方说,定义了一个类表示“人”,人有姓名年龄等。希望在比较两个"人"对象的大小时,具体比较他们的年龄。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询