Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Использование модификаторов методов


Автор: QryStaL 20.1.2009, 10:21
Кто-нибудь использует в своем коде экзотические модификаторы методов типа new virtual или override abstract ? Интересно было бы увидеть примеры их уместного использования =)

Автор: mihryak 20.1.2009, 12:25
new virtual применение придумать можно, ведь new просто прерывает цепочку наследования, её можно начать заново с прервавшего
сам по себе new использовал вполне себе осмысленно у метода Invoke в сгенерированных проксях SoapHttpClientProtocol, только от этого класса наследоваться нужды уже не было

а вот оверрайдить абстракность.. чушь какая-то
но вдруг действительно польза есть?

Автор: QryStaL 20.1.2009, 12:38
Цитата(mihryak @  20.1.2009,  12:25 Найти цитируемый пост)
но вдруг действительно польза есть?

вот и мне интересно =)

Автор: Лен 20.1.2009, 13:05
От override abstract тоже может быть польза. К примеру, есть такая иерархия:
Код

class MyParent
{
  virtual void SomeMethod()
  {
    ...
  }
}
abstract class MyChild: MyParent
{
  override abstract SomeMethod();
}
class MyChildChild(): MyChild
{
  override void SomeMethod()
  {
    ...
  }
}

Если реализация SomeMethod в MyParent и в MyChildChild (и прочих потомках MyChild) сильно отличается (читай: попытка вызвать base.SomeMethod(); в MyChild или потомках приводит к краху), метод SomeMethod в MyChild не помечен как abstract, а в некотором class MyChildChild2: MyChild его забыли реализовать (не смотрите на меня так, не самая редкая ситуация в проекте на 100/1000+ классов), то ничего хорошего явно ждать не приходится.

Автор: mihryak 20.1.2009, 13:19
Лен, прикольно, не знал, что можно заабстрактить нормальный метод (точнее никогда об этом и не думал smile)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)