我有一個類,我用它來描述一個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',這顯然是錯誤的。 –