8
我有一個泛型的問題。當我嘗試在通用中使用較少的運算符時,它們的調用不會發生。但它適用於Equals方法。 這是一些測試類:C#泛型類運算符不工作
public class Test
{
public int i;
static public Boolean operator ==(Test obj1, Test obj2)
{
Console.WriteLine("operator ==");
return obj1.i == obj2.i;
}
static public Boolean operator !=(Test obj1, Test obj2)
{
Console.WriteLine("operator !=");
return obj1.i != obj2.i;
}
public override bool Equals(object obj)
{
Console.WriteLine("operator equals");
return this == (Test)obj;
}
public override int GetHashCode()
{
Console.WriteLine("HashCode");
return 5;
}
}
和類檢查:
public class Checker
{
public Boolean TestGeneric<T>(T Left, T Right) where T : class
{
return Left == Right; //not work override operators
return Left.Equals(Right); //work fine
}
}
小測試:
Test left = new Test() { i = 4 };
Test right = new Test() { i = 4 };
var checker = new Checker();
Console.WriteLine(checker.TestGeneric<Test>(left, right));
Console.ReadKey();
我如何可以使用測試類運營商少仿製藥?
請不要超越平等,除非你知道你在做什麼。即使那樣,請三思! –
'return 5;'不是最大的哈希碼。 – Jodrell
是的。您應該使用666。 –