Как видно из Hejlsberg, et. и др. 2011 4-е изд. Языки программирования C#, которые вы можете сделать «новой» функцией с тем же именем, что и существующий член класса. Я могу несколько понять, почему это может быть полезно в каком-то сценарии конфликтов версий,Частный * новый * метод или «Тень», но частный
Но я не понимаю, почему вы когда-либо хотели бы создать «новую» функцию или функцию «тень»; private
По этой же причине вы хотите, чтобы любой другой член был закрыт? Представьте себе случай, когда новая версия базового класса вводит новый общедоступный виртуальный метод с тем же именем, что и существующий частный метод, который у вас есть в вашем подклассе. Минимальное изменение, чтобы ваш код скомпилировать и работать точно так же, как и раньше, без каких-либо предупреждений, заключается в том, чтобы явно помечать его как «новый», чтобы показать, что он не пытается переопределить метод базового класса. –
@JonSkeet Я думаю, что моя реакция на коленный рефлекс здесь, почему бы просто не назвать ее другим именем? –
@JonSkeet Можно сказать, что тени - это исключительно домен кода, который по какой-то неисчислимой причине не может быть реорганизован? Я лично не вижу возможности использовать эту функцию при работе в одиночной иерархии классов, и это запутывает меня, когда я пытаюсь установить правильный набор инструментов из доступных идиом. Другой, который беспокоит меня, например, - это перестройка интерфейса. Мне кажется; они не нужны, если у вас есть исходный код; ты меня поймаешь? –