LSharp
LSharp copied to clipboard
覆盖ToString,GetHashCode,Equals方法有问题
代码:
/// <summary>
/// 测试覆盖系统方法
/// </summary>
public class Test12
{
public string Name;
public int Age;
public override string ToString()
{
return string.Format("Name:{0}, Age:{1}", Name, Age);
}
public override bool Equals(object obj)
{
if (!(obj is Test12))
{
return false;
}
var o = (Test12) obj;
return Name == o.Name && Age == o.Age;
}
public override int GetHashCode()
{
//for test
return 123456789;
}
public static void TestOverrideObjectMethod()
{
Test12 t1 = new Test12 {Name = "Test1", Age = 18};
Test12 t2 = new Test12 {Name = "Test1", Age = 18};
Logger.Log("t1.ToString(): " + t1);
Logger.Log("t1.GetHashCode(): " + t1.GetHashCode());
Logger.Log("t1.Equals(t2): " + t1.Equals(t2));
}
}
执行结果:
t1.ToString(): CLRSharp.CLRSharp_Instance t1.GetHashCode(): 30880833 t1.Equals(t2): False
用例代码: https://github.com/tony-tang/LSharp/commit/e337e714a73697a45544912f4b3addccda6a0b08
这些是无法实现的,类型系统隔离
--- 原始邮件 ---
发件人: "tony-tang" [email protected] 已发: 2015年3月31日 上午9:30 收件人: "lightszero/LSharp" [email protected] 主题: [LSharp] 覆盖ToString,GetHashCode,Equals方法有问题 (#18)
代码:
/// <summary>
/// 测试覆盖系统方法
/// </summary>
public class Test12
{
public string Name;
public int Age;
public override string ToString()
{
return string.Format("Name:{0}, Age:{1}", Name, Age);
}
public override bool Equals(object obj)
{
if (!(obj is Test12))
{
return false;
}
var o = (Test12) obj;
return Name == o.Name && Age == o.Age;
}
public override int GetHashCode()
{
//for test
return 123456789;
}
public static void TestOverrideObjectMethod()
{
Test12 t1 = new Test12 {Name = "Test1", Age = 18};
Test12 t2 = new Test12 {Name = "Test1", Age = 18};
Logger.Log("t1.ToString(): " + t1);
Logger.Log("t1.GetHashCode(): " + t1.GetHashCode());
Logger.Log("t1.Equals(t2): " + t1.Equals(t2));
}
}
执行结果:
t1.ToString(): CLRSharp.CLRSharp_Instance t1.GetHashCode(): 30880833 t1.Equals(t2): False
用例代码: https://github.com/tony-tang/LSharp/commit/e337e714a73697a45544912f4b3addccda6a0b08
Reply to this email directly or view it on GitHub: https://github.com/lightszero/LSharp/issues/18