public abstract class DataClass
{
public static bool operator ==(DataClass left, DataClass right)
{
return left.Equals(right);
}
}
持っており、これは明示的にキャストせずに、
object left = new DataClass();
object right = new DataClass();
bool expected = true;
bool actual;
actual = ((DataClass)left) == ((DataClass)right);
Assert.AreEqual(expected, actual); // passes
actual = left == right;
Assert.AreEqual(expected, actual); // fails
はどのようにそれが正しい実装を呼び出す作るために何が起こりますか?
クラスが変更可能であるか、または「封印されていない」場合は、最初に 'operator =='をオーバーライドするのが間違っている可能性があります。この特定のクラスが平等であることが分かっていない限り、常に '==' *の代わりに '' Equals'を使うべきです*。 'object'はこの理想から遠いので、これをしないでください。 – Jon