gpt4 book ai didi

c# - 一旦变量被设置为特定值就返回它。平等重载

转载 作者:太空宇宙 更新时间:2023-11-03 19:30:20 25 4
gpt4 key购买 nike

我正在为值比较重载 Equality 方法,想知道是否有一种干净的方法可以在其中一个值比较返回 false 时立即返回 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。像下面这样的东西......

        // 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;

所以现在在 _valOne 的比较之后不再进行值比较。这看起来非常重复、笨拙,而且(最重要的)可读性很糟糕。我想知道是否有任何方法可以在不使用 && 运算符的情况下以干净的方式将这段代码简化为相同的效果。

最佳答案

您可以利用 short-circuiting逻辑 AND (&&) 运算符的性质,如下所示:

return this._valOne == myClass._valOne
&& this._valTwo == myClass._valTwo
&& this._valThree == myClass._valThree;

只要任何一个比较的计算结果为假,整个条件的计算结果就为假。如果三个都为真,则条件返回真。

关于c# - 一旦变量被设置为特定值就返回它。平等重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com