this.value1
并且c.value1
都可以为空或非空。所以一共4个组合来测试。value2
也可以为空或非空。
下面的 if-then-else 是否可以用更短的东西代替,比如使用三元运算符( if then else 使用? :
运算符) - 对于这种特定情况,这是否是一个不好的做法,因为我们正在测试value1
and的 4 种组合value2
?
public override bool Equals(object obj)
{
bool value1_check = false;
bool value2_check = false;
var c = obj as ObjectType;
if (this.value1 != null)
value1_check = this.value1.Equals(c.value1);
else if ((this.value1 == null) && (c.value1 == null))
value1_check = true;
else if ((this.value1 == null) && (c.value1 != null))
value1_check = c.value1.Equals(this.value1);
if (this.value2 != null)
value2_check = this.value2.Equals(c.value2);
else if ((this.value2 == null) && (c.value2 == null))
value2_check = true;
else if ((this.value2 == null) && (c.value2 != null))
value2_check = c.value2.Equals(this.value2);
return (value1_check && value2_check);
}