struct PhoneNumber
{
        private string number;
        public PhoneNumber(string text)
{
this.number = text;
}        public string Text
{
get { return this.number; }
}        public override int GetHashCode()
        {
            return this.number.GetHashCode();
        }        public override bool Equals(object other)
        {
            return (other is PhoneNumber) && Equals((PhoneNumber)other);
        }        public bool Equals(PhoneNumber other)
        {
            return this.number == other.number;
        }
} private Name[] names;
public void Add(Name name)
{ this.names[used++] = name;

}
 int i = Array.IndexOf(this.names, name);
在这个地方会自动调用结构体中public override bool Equals(object other)这个方法,为什么?
在这个结构体中有public override bool Equals(object other)这个重写的方法,但是现在没有继承什么接口或类,怎么说这个重写呢?
还有就是 public bool Equals(PhoneNumber other) 这个方法和上面的名字一样,可不可以认为是重载呢?

解决方案 »

  1.   

    它是结构体,本身带Equals这个方法。public bool Equals(PhoneNumber other)和重载的不一样。最最起码的是参数都不一样。
      

  2.   

    wdy9927() 
    int i = Array.IndexOf(this.names, name);
    那在这个地方怎么会自己自动调用public override bool Equals(object other)
    这个方法啊
      

  3.   

    1、Equals(object other)
    是所有类的基类object的虚函数
    2、Array.Indexof 会自动调用object.Equals ,你的struct override Equals所以回调用
      

  4.   

    在这个结构体中有public override bool Equals(object other)这个重写的方法,但是现在没有继承什么接口或类,怎么说这个重写呢?
    --------------------------------------------------------------------------------
    在.NET中任何类型的数据都是从Object继承而来不管你是不是显示的继承了Object而bool Equals(object other)是Object中的虚方法,显然你这里是复写了Object中的Equals还有就是 public bool Equals(PhoneNumber other) 这个方法和上面的名字一样,可不可以认为是重载呢?
    -------------------------------------------------------------------------
    这个明显是重载没什么可说的