Как влияет ключевое слово new на тип возвращаемого значения метода C #? - PullRequest
5 голосов
/ 16 февраля 2011

Случайно я действительно написал этот метод:

public static new iTextSharp.text.Color ITextFocusColor()
{
   return new iTextSharp.text.Color(234, 184, 24);
}

Он работает, как и предполагалось, но я был очень удивлен, что ему разрешено использовать ключевое слово new в типе возвращаемого значения метода.Есть ли какой-нибудь эффект / разница, если я поставлю новый или нет?Или для чего используется новый?

И возможно ли это на других языках OO?

Ответы [ 4 ]

8 голосов
/ 16 февраля 2011

Это не влияет на тип возвращаемого значения, это означает, что этот метод скрывает метод из базового класса (а не переопределяет его).Это может быть полезно, например, если вам нужно изменить тип возвращаемого значения, объявленный в базовом классе, но скрывающий метод не будет участвовать в полиморфизме, т.е. если вы вызываете ITextFocusColor для экземпляра производного класса через переменнуюбазовый класс, будет вызываться базовая реализация (а не та, которая объявлена ​​с new)

Подробнее см. на этой странице в MSDN .

5 голосов
/ 16 февраля 2011

Ключевое слово new указывает, что вы намеренно предоставляете новую реализацию метода или свойства, которая уже предоставлена ​​базовым классом.Это делается для того, чтобы скрыть членов базового класса преднамеренным, самодокументированным действием.

Если в вашем базовом классе такого метода нет, это на самом деле не имеет значения.

Для получения более подробной информациисм. C # спецификацию (в частности, раздел 3.7.1.2 Скрытие наследования).

1 голос
/ 16 февраля 2011

new ключевое слово в типе возврата метода здесь скрывает родительский метод.

1 голос
/ 16 февраля 2011

Это модификатор new . Он скрывает членов от базового класса вместо переопределения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...