#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-тип объекта, а уж тип знает, как он называется.
Комментариев нет:
Отправить комментарий