【发布时间】:2010-10-27 21:08:50
【问题描述】:
一些上下文代码:
class a
{
}
class b
{
public a a{get;set;}
public static implicit operator a(b b)
{
return b.a;
}
}
a a=null;
b b=null;
a = b;
//compiler: cannot apply operator '==' to operands of type tralala...
bool c = a == b;
是否可以在不同类型的实例上使用 == 运算符,其中一个可以隐式转换为另一个?我错过了什么?
编辑:
如果类型必须是相同的调用==,那为什么
int a=1;
double b=1;
bool c=a==b;
有效吗?
【问题讨论】:
-
我假设您的 int/double 示例有效,因为它们是值类型,而不是引用类型...
-
这可能是一个原因。唯一的问题是 - 如果是这样,它并不能解释为什么引用类型不能像值类型一样隐式执行转换。
标签: c# operators type-conversion equals-operator