压倒等于运算符

Beh*_*joo 3 c#

我试图覆盖Equals,以便它根据变量ID进行比较:

public class OrderID
{
    public string ID { get; private set; }

    public OrderID(string id)
    {
        ID = id;
    }

    public override bool Equals(object obj)
    {
        if (obj is OrderID)
        {
            return ((OrderID)obj).ID == ID;
        }
        else return false;
    }

    public override string ToString()
    {
        return ID;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我以下面的方式测试它时,它返回false:

static void Main(string[] args)
{

    OrderID i1 = new OrderID("Hello");
    OrderID i2 = new OrderID("Hello");

    bool test = i1 == i2;

    Console.WriteLine(test.ToString());
    Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)

问题是什么?当我尝试单步执行它时,我的覆盖甚至没有进入.

Nat*_*lor 11

对象的Equals()方法与'=='运算符不同.您需要重载类型上的'=='运算符,或者调用i1.Equals(i2)而不是i1 == i2.

MSDN重载等于()和运算符的指南==