Не могу объяснить, что происходит в следующей программе.GetType возвращает тип, который я хочу вернуть, а не исходный.Означает ли это, что мы не можем полагаться на GetType?Оператор прав, хотя.Кто-нибудь может объяснить это подробно?
using System;
namespace ConsoleApplication2
{
public class MyClass
{
public Type GetType()
{
return typeof(Program);
}
}
class Program
{
static void Main(string[] args)
{
MyClass mc = new MyClass();
if (mc.GetType() == typeof(Program))
{
Console.WriteLine("Confused.");
}
if(mc is Program)
{
Console.WriteLine(mc.GetType()); // Don't get inside the if. Why?
}
}
}
}
Обновление : Я читаю книгу CLR через C # 3-е издание.В главе 4 (2-я страница), когда он объясняет различные методы в System.Object, он говорит
«Метод GetType не является виртуальным, что предотвращает переопределение этого метода классом и ложь о его типе»
Хотя я согласен с первым утверждением, я лгу о типе MyClass.не я?