|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Всем привет! Везде пишут, что он скрывает метод помеченный модификатором new, не могу понять что значит "скрывает"? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 08:56 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
_ricardo_Всем привет! Везде пишут, что он скрывает метод помеченный модификатором new, не могу понять что значит "скрывает"? Правильно говорить, перекрывает. Под «скрывает» надо понимать, что перекрытый с помощью new метод базового класса теперь может быть доступен только при приведении объекта к типу базового класса. Иначе его никак не вызвать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 09:01 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
hVostt_ricardo_Всем привет! Везде пишут, что он скрывает метод помеченный модификатором new, не могу понять что значит "скрывает"? Правильно говорить, перекрывает. Под «скрывает» надо понимать, что перекрытый с помощью new метод базового класса теперь может быть доступен только при приведении объекта к типу базового класса. Иначе его никак не вызвать. Не совсем так. Модификатор new просто тупо подавляет варнинг компилятора о перекрытии метода . Само по себе перекрытие делается собственно объявлением метода, и модификатор new в перекрытии никакого участия не принимает. И я, чесговоря, был бы не против, если бы этого модификатора new не было вообще, т.к. по моему скромному, перекрытие метода говорит о явном косяке в архитектуре. А этот new помогает этот косяк спрятать (в то время, как на него стоило бы обратить внимание из-за некоторых особенностей вызова перекрытых методов). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 09:19 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныА этот new помогает этот косяк спрятать (в то время, как на него стоило бы обратить вниманиеНа мой взгляд как раз new и заставляет обратить на него внимание, не запрещая сделать перекрытие, если очень хочется. Хотя в моей практике не встречалось необходимости так делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 09:57 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Сон Веры Павловны И я, чесговоря, был бы не против, если бы этого модификатора new не было вообще, т.к. по моему скромному, перекрытие метода говорит о явном косяке в архитектуре. А этот new помогает этот косяк спрятать (в то время, как на него стоило бы обратить внимание из-за некоторых особенностей вызова перекрытых методов). Тоже думал об нем. Есть случай , когда без него никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 10:17 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
ЕвгенийВТоже думал об нем. Есть случай , когда без него никак. Не. Я выше немного про другое - не столько про перекрытие (бывают ситуации, когда костыль - единственное решение, и никуда не денешься), сколько именно про модификатор. Который просто давит варнинг компилятора. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 10:34 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
обычно не рекомендуют его исполь3овать, потому как скрыть по настоящему не получится ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 10:37 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Почему на выходе будет "I am a B"? То есть, если мы объект класса C приводим к типу класса A, то мы двигаемся по иерархии от класса C до класса A и останавливаемся на первом методе, который имеет модификатор override, так? Поясните пожалуйста, голова дымится. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 11:23 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
_ricardo_ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Почему на выходе будет "I am a B"? То есть, если мы объект класса C приводим к типу класса A, то мы двигаемся по иерархии от класса C до класса A и останавливаемся на первом методе, который имеет модификатор override, так? Поясните пожалуйста, голова дымится. override переопределяет метод, а не перекрывает его, так как создается экземпляр класс C наследованное от класса B, а вызывается метод meth1 класса А, который переопределен классом B, то выполняется метод из класса B, по моему всё логично Если вам нужно использовать ключевое слово new, это значит только то, что вы делайте что-то неправильно ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 12:44 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Roman Mejtes_ricardo_ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Почему на выходе будет "I am a B"? То есть, если мы объект класса C приводим к типу класса A, то мы двигаемся по иерархии от класса C до класса A и останавливаемся на первом методе, который имеет модификатор override, так? Поясните пожалуйста, голова дымится. override переопределяет метод, а не перекрывает его, так как создается экземпляр класс C наследованное от класса B, а вызывается метод meth1 класса А, который переопределен классом B, то выполняется метод из класса B, по моему всё логично Если вам нужно использовать ключевое слово new, это значит только то, что вы делайте что-то неправильноСпасибо, теперь всё встало на свои места. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 13:55 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныНе совсем так. Модификатор new просто тупо подавляет варнинг компилятора о перекрытии метода . По факту это так, но всего лишь из-за того, что разработчики языка затупили. Без new должна быть ошибка, следует именно так это и воспринимать. Рихтер об этом писал. Сон Веры ПавловныНе совсем так. Модификатор new просто тупо подавляет варнинг компилятора о перекрытии метода . Само по себе перекрытие делается собственно объявлением метода, и модификатор new в перекрытии никакого участия не принимает. И я, чесговоря, был бы не против, если бы этого модификатора new не было вообще, т.к. по моему скромному, перекрытие метода говорит о явном косяке в архитектуре. А этот new помогает этот косяк спрятать (в то время, как на него стоило бы обратить внимание из-за некоторых особенностей вызова перекрытых методов). Ну ты уже предлагаешь заткнуть ствол ружья деревянной пробкой, чтобы не выстрилить в ногу. Достаточно было сделать new обязательным при перекрытии метода. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 13:59 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
hVosttСон Веры ПавловныНе совсем так. Модификатор new просто тупо подавляет варнинг компилятора о перекрытии метода . По факту это так, но всего лишь из-за того, что разработчики языка затупили. Без new должна быть ошибка, следует именно так это и воспринимать. Рихтер об этом писал. Почему именно ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 14:18 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
ЕвгенийВПочему именно ошибка? Чтобы ты не смог пройти мимо, на предупреждение компилятора можно и не обратить внимание. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 14:21 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
hVostt Чтобы ты не смог пройти мимо, на предупреждение компилятора можно и не обратить внимание. Это неправильно, ибо может зависить не только от тебя и твой код, который вчера нормально компилировался, сегодня валиться с ошибкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 14:52 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
ЕвгенийВ, потому, что в 1 классе не могут быть 2 одинаковых метод с одним именем и одной сигнатурой. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 15:38 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Roman MejtesЕвгенийВ, потому, что в 1 классе не могут быть 2 одинаковых метод с одним именем и одной сигнатурой. Эт к чему? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 16:27 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
ЕвгенийВЭто неправильно, ибо может зависить не только от тебя и твой код, который вчера нормально компилировался, сегодня валиться с ошибкой. Это неправильно делать ошибку сейчас, это надо было делать раньше на этапе создания языка. Т.е. на лицо косяк разработчиков C# с далеко идущими последствиями. Конечно, не критичными, но всё же. Возможно в какой-то версии они частично откажутся от обратной совместимости, чтобы улучшить дизайн языка. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 16:28 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
hVosttЕвгенийВЭто неправильно, ибо может зависить не только от тебя и твой код, который вчера нормально компилировался, сегодня валиться с ошибкой. Это неправильно делать ошибку сейчас, это надо было делать раньше на этапе создания языка. Т.е. на лицо косяк разработчиков C# с далеко идущими последствиями. Конечно, не критичными, но всё же. Возможно в какой-то версии они частично откажутся от обратной совместимости, чтобы улучшить дизайн языка. Какую ошибку? Какой косяк? Все там правильно. В Java все методы виртуальные и они зашли с другой стороны. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 18:43 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
типичный вопрос из собеседований. а на практике кто-то в своем уме это делает? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 21:41 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныНе совсем так. Модификатор new просто тупо подавляет варнинг компилятора о перекрытии метода . Само по себе перекрытие делается собственно объявлением метода, и модификатор new в перекрытии никакого участия не принимает. И я, чесговоря, был бы не против, если бы этого модификатора new не было вообще, т.к. по моему скромному, перекрытие метода говорит о явном косяке в архитектуре. А этот new помогает этот косяк спрятать (в то время, как на него стоило бы обратить внимание из-за некоторых особенностей вызова перекрытых методов). hVosttЭто неправильно делать ошибку сейчас, это надо было делать раньше на этапе создания языка. Т.е. на лицо косяк разработчиков C# с далеко идущими последствиями. Конечно, не критичными, но всё же. Возможно в какой-то версии они частично откажутся от обратной совместимости, чтобы улучшить дизайн языка. Чуть не заплакал Люди добрые, слово полиморфизм кому-то о чем-то говорит? Ключевое слово new используют, если надо производному члену иметь такое же имя, как член в базовом классе. При этом вообще не требуется, чтобы он участвовал в виртуальном вызове. Собственно, вся "архитектура". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2016, 22:20 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
СмузиКлючевое слово new используют, если надо производному члену иметь такое же имя, как член в базовом классе. Производный член вполне может иметь такое же имя, как и в базовом классе, без слова new. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 02:47 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
СмузиЧуть не заплакал Люди добрые, слово полиморфизм кому-то о чем-то говорит? Ключевое слово new используют, если надо производному члену иметь такое же имя, как член в базовом классе. При этом вообще не требуется, чтобы он участвовал в виртуальном вызове. Собственно, вся "архитектура". Да ты прям местный Колумб, не меньше! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 08:14 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныСмузиКлючевое слово new используют, если надо производному члену иметь такое же имя, как член в базовом классе. Производный член вполне может иметь такое же имя, как и в базовом классе, без слова new. Нечаянно вырвал из контекста? СмузиПри этом вообще не требуется, чтобы он участвовал в виртуальном вызове. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 09:24 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
Смузи Ключевое слово new используют, если надо производному члену иметь такое же имя, как член в базовом классе. При этом вообще не требуется, чтобы он участвовал в виртуальном вызове. Собственно, вся "архитектура". А когда это требуется? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:50 |
|
Что делает модификатор new?
|
|||
---|---|---|---|
#18+
ЕвгенийВА когда это требуется? Тут вопрос не в частоте использования, а в поддержке одного из фундаментальных столпов современных языков - полиморфизма. К примеру, я это не использую вообще. Но это не значит, что это проблема C#, дырки в архитектуре и прочие обвинения. Жить по принципу мне морковка не нравится, это всё тупые селекционеры - контрпродуктивно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 12:57 |
|
|
start [/forum/search_topic.php?author=UKY&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 697ms |
total: | 890ms |
0 / 0 |