与此同时重载了Equals和operator==,到底调用哪一个
同时重载了Equals和operator==,到底调用哪一个?
这段程序输出
operator==
True
operator!=
False
Press any key to continue . . .
问题是,既然我也重载了Equals函数,那么这个函数在什么时候才会被调用到呢? 似乎Operator==会自动被调用,永远调用不到Equals?
------解决方案--------------------
st1.Equals(st2)不就调用了吗
------解决方案--------------------
st1.Equals(st2)
struct s
{
public int i;
public override bool Equals(object obj)
{
Console.WriteLine("Equanls");
return base.Equals(obj);
}
public static bool operator ==(s obj1, s obj2)
{
Console.WriteLine("operator==");
return obj1.i == obj2.i;
}
public static bool operator !=(s obj1, s obj2)
{
Console.WriteLine("operator!=");
return obj1.i != obj2.i;
}
}
static void Main(string[] args)
{
s st1 = new s();
st1.i = 0;
s st2 = st1;
Console.WriteLine(st1 == st2);
Console.WriteLine(st1 != st2);
}
这段程序输出
operator==
True
operator!=
False
Press any key to continue . . .
问题是,既然我也重载了Equals函数,那么这个函数在什么时候才会被调用到呢? 似乎Operator==会自动被调用,永远调用不到Equals?
------解决方案--------------------
st1.Equals(st2)不就调用了吗
------解决方案--------------------
st1.Equals(st2)