#c_sharp #net #clr
Собственно вопрос: как и почему автоматически перегружается виртуальный метод базового
класса System.Object ToString(), если мы его явно ни как не трогаем?
В данной технике используется АОП?
Пример кода:
using System;
class A
{
class B
{
public void D()
{
Console.WriteLine(base.ToString());
}
}
static void Main()
{
B b = new B();
Console.WriteLine(b.ToString());
}
}
Ответы
Ответ 1
Проще всего посмотреть имплементацию через Рефлектор или ILSpy. Или на reference source. class object { // ... public virtual string ToString() { return this.GetType().ToString(); } // ... } Компилятор мог бы применить свою компиляторную магию, но тут она не понадобилась. Метод GetType() возвращает настоящий, runtime-тип объекта, а уж тип знает, как он называется.
Комментариев нет:
Отправить комментарий