• Авторизация


Багофича в .NET 07-12-2007 19:59 к комментариям - к полной версии - понравилось!


Вот код на С# который скомпилирован не будет
    1 public class C1
    2 {
    3      public virtual object A()
    4      {
    5          return null;
    6      }
    7 }
    8 
    9  public class C2 : C1
   10  {
   11      public override string A()
   12      {
   13          return "foo";
   14      }
   15  }

Вся беда в том что в классе C2 я всего-лишь пытаюсь сузить возвращаемый тип. При этом с точки зрения ООП и правила Лиски всё в порядке. Более того, аналогичный код прекрасно скомпилируется в Java. Абыдна однако... Для 100% аналогии придётся написать что-то вроде:
    1  public class C1
    2  {
    3      public virtual object A()
    4      {
    5          return null;
    6      }
    7  }
    8 
    9  public class C2 : C1
   10  {
   11      public new virtual string A()
   12      {
   13          return (string)((C1) this).A();
   14      }
   15      public override object A()
   16      {
   17          return "foo";
   18      }
   19  }

вверх^ к полной версии понравилось! в evernote
Комментарии (2):
11-12-2007-18:02 удалить
Второй вариант не компилится.
dimzon541 11-12-2007-18:22 удалить
Исходное сообщение Pablitto
Второй вариант не компилится.

знаю :(


Комментарии (2): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Багофича в .NET | dimzon541 - Поток не замутненного разумом сознания... | Лента друзей dimzon541 / Полная версия Добавить в друзья Страницы: раньше»