我定义了这样的接口和实现类
interface IFC
{
}class A : IFC
{
public static bool operator ==(A ifc1, A ifc2)
{
return true;
} public static bool operator !=(A ifc1, A ifc2)
{
return false;
} public override bool Equals(object obj)
{
return true;
} public override int GetHashCode()
{
return base.GetHashCode();
}
}
然后,当我这样进行比较,结果是 true 。这里没问题。
A ifc1 = new A();
A ifc2 = new A();
Console.WriteLine(ifc1 == ifc2);
可是当我这样比较的时候,结果却是 False,请问是为什么呢?怎么重载操作符可以使这样也是 True 呢?IFC ifc1 = new A();
IFC ifc2 = new A();
Console.WriteLine(ifc1 == ifc2);
interface IFC
{
}class A : IFC
{
public static bool operator ==(A ifc1, A ifc2)
{
return true;
} public static bool operator !=(A ifc1, A ifc2)
{
return false;
} public override bool Equals(object obj)
{
return true;
} public override int GetHashCode()
{
return base.GetHashCode();
}
}
然后,当我这样进行比较,结果是 true 。这里没问题。
A ifc1 = new A();
A ifc2 = new A();
Console.WriteLine(ifc1 == ifc2);
可是当我这样比较的时候,结果却是 False,请问是为什么呢?怎么重载操作符可以使这样也是 True 呢?IFC ifc1 = new A();
IFC ifc2 = new A();
Console.WriteLine(ifc1 == ifc2);
IFC ifc2 = new A();
Console.WriteLine((A)ifc1 == (A)ifc2);