Skip to content

覆盖ToString,GetHashCode,Equals方法有问题 #18

@tony-tang

Description

@tony-tang

代码:

/// <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

用例代码: tony-tang@e337e71

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions