false
値比較のために Equality メソッドをオーバーロードしていますが、値比較の 1 つが falseを返すとすぐに戻るクリーンな方法があるかどうか疑問に思っていました。たとえば、基本的な考え方は次のとおりです。
public class MyClass
{
private int _valOne;
private int _valTwo;
private int _valThree;
public MyClass(int valOne, int valTwo, int valThree)
{
_valOne = valOne;
_valTwo = valTwo;
_valThree = valThree;
}
public override bool Equals(object obj)
{
// If the object is null return false
if (obj == null)
{
return false;
}
// If the object is not of MyClass type return false
MyClass myClass = obj as MyClass;
if (myClass == null)
{
return false;
}
// Now compare all the field values
bool areEqual = false;
areEqual = (this._valOne == myClass._valOne);
areEqual = (this._valTwo == myClass._valTwo);
areEqual = (this._valThree == myClass._valThree);
return areEqual;
}
}
が等しく_valOne
ないとします。比較する最も効率的な方法は、false
2 つの値が等しくないことがわかったらすぐに戻ることです。次のようなもの...
// Now compare all the field values
bool areEqual = false;
areEqual = (this._valOne == myClass._valOne);
if (!areEqual)
{
return false;
}
areEqual = (this._valTwo == myClass._valTwo);
if (!areEqual)
{
return false;
}
areEqual = (this._valThree == myClass._valThree);
return areEqual;
そのため、s の比較後、_valOne
値の比較は行われません。これは非常に反復的で、ぎこちなく、(最も重要なことに) 可読性が悪いように見えます。&& 演算子を使用せずに、このコードをクリーンな方法で同じ効果に縮小できる方法があるかどうかを知りたいです。