我有一个类,我用它来描述一个XYZ
坐标以及3个属性。类与如果在一个属性上相等
类看起来是这样的:
class dwePoint
{
public double X { get; set; }
public double Y { get; set; }
public double Z { get; set; }
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
public override bool Equals(object obj)
{
return Equals(obj as dwePoint);
}
protected bool Equals(dwePoint other)
{ //This doesnt seem to work
if(Prop1== "Keep")
{
return false;
}
return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z);
}
public override int GetHashCode()
{
unchecked
{
var hashCode = X.GetHashCode();
hashCode = (hashCode * 397)^Y.GetHashCode();
hashCode = (hashCode * 397)^Prop1.GetHashCode();
hashCode = (hashCode * 397)^Z.GetHashCode();
return hashCode;
}
}
}
在Equals
检查XYZ
,我可以过滤掉仅根据实际坐标重复,忽视了性能。 在我的代码,我使用了一个列表,所以我称之为List.Distinct()
现在有一件事我找不出尚未: 有2点与同XYZ
这是可能的,但具有不同的属性。 在这种情况下,我总是希望保留一个特定的字符串(例如“Keep”),并始终删除具有其他值的那个。
我已经尝试了一些if
声明,没有任何运气...
我应该如何处理呢?
*我已经在尝试一些if语句*。你能表演吗? –
@ S.Akbari编辑我的文章;我的逻辑是有可能是2点(或更多)与相同的XYZ,其中只有2中的1有“保持”在Prop1;因此那一个会是错误的,但是检查其他人应该将它作为一个副本返回。 –
如果您将一个对象与'Prop1 =='Keep'与自身进行比较,这会产生'false',这显然是错误的。 –