我需要知道使用哈希碼來比較許多對象的方法。所以這裏是其中一個班。使用哈希碼比較對象的屬性
public class Test: IEquatable<Test>
{
public Test()
{
}
public string ID { get; set; }
public string Name{ get; set; }
public static int SafeGetHashCode<T>(this T value) where T : class
{
return value == null ? 0 : value.GetHashCode();
}
public override int GetHashCode()
{
int hash = 19;
hash = hash * 31 + ID.SafeGetHashCode();
hash = hash * 31 + Name.SafeGetHashCode();
return hash;
}
public override bool isSame(object obj)
{
// compare objects here
}
}
但是有2個錯誤。兩者都是一樣的。
「字符串」中不包含關於「SafeGetHashCode」和沒有擴展方法「SafeGetHashCode」接受類型「字符串」的第一個參數的定義可以找到(是否缺少using指令或程序集引用?)
而對於isSame(),我不知道如何編寫代碼。該概念是比較所有對象,如果有2個相同的ID名稱,將它們組合在一起。
Item A = new Item();
Item B = new Item();
Item c = new Item();
A.ID = "Exam1";
A.Name = "Apple";
B.ID = "Exam1";
B.Name = "Orange";
C.ID = "Exam1";
C.Name = "Apple";
因此,項目A和C將組合在一起。
你的'isSame'意思是'Equals'嗎? –