In the exact setup:
namespace NS
{
class Program
{
static void Main(string[] args)
{
Object obj1 = new A();
Object obj2 = new A();
Console.WriteLine(obj1.GetType());
Console.WriteLine(obj2.GetType());
Console.WriteLine(obj1.Equals(obj2)); // why not entering A::Equals(A a)
Console.ReadLine();
}
}
class A
{
int x;
public bool Equals(A a)
{
Console.WriteLine("enters Equals");
return this.x == a.x;
}
}
}
I have the output from console app in C#:
NS.A
NS.A
False
Question: If ojb1
and obj1
are of type NS.A why public bool Equals(A a)
is not entered?
Is Console.WriteLine(obj1.GetType());
"lies" about a real object type. I am confused?
I wanted to call A.Equals(A)
method from code even though Object obj1 = new A();
I know I can fix the problem with A obj1 = new A();
but I am stuck with understanding why GetType()
returns the A
and I cannot call the A.Equals(A)
.