我有一个基类(TFoo)和后代类(TBar);我将覆盖两者的 == 运算符。我希望后代类检查其自己的字段,并调用基类的 == 运算符,以便基类进行自己的检查。
在下面的代码中,您将看到在 中TBar == operator,我类型转换为基类以检查基类相等性,如下所示:(TFoo)a == (TFoo)b。
(这似乎有效!希望我在测试中没有遗漏任何问题。)
然而,我正在寻找一种更优雅的方法来做到这一点。例如,(base)a == (base)b或a base.== b或base.==(a, b)或a.base.Equals(b)或某事。
显然,上面的例子是行不通的,而且可能看起来很可笑;如前所述,(TFoo)a == (TFoo)b确实可以正常工作。我正在寻找一种无需显式命名该类即可执行此操作的方法TFoo。
编辑:感谢所有精彩的回复!我修改了下面的原代码,可以.GetType()直接比较;我删除了.Name一些人指出的愚蠢且危险的内容。
class TFoo
{
public int foo;
public static bool operator ==(TFoo a, TFoo b)
{
return a.GetType() == b.GetType()
&& a.foo == b.foo;
}
public static bool operator !=(TFoo a, TFoo b)
{
return !(a == …Run Code Online (Sandbox Code Playgroud)