Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
Есть класс выведенный из базового, у которого где-то внутри есть свой Dispose(). Мне нужен Dispose в моем, но когда добавляю, студия пишет мне что мой спрячет Dispose базового и предлагает сделать так Вопрос: Код: c# 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2016, 14:10 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
Ролг Хупин, Код: c# 1. - этого нужно в наследнике переопределять (если Dispose по рекомендациям MS реализован) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2016, 14:33 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
Ролг Хупин Код: c# 1. У меня для вас плохие новости: Код: 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. - догадайтесь с трех раз, что будет в консольном выводе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2016, 15:14 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныРолг Хупин Код: c# 1. У меня для вас плохие новости: Код: 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. - догадайтесь с трех раз, что будет в консольном выводе. И угадайте, что будет, если сделать вот-так: Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2016, 18:17 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
Ролг Хупин, никаких new, только override! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2016, 19:37 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
mikronИ угадайте, что будет, если сделать вот-так: Код: c# 1. Да что тут угадывать, я и так знаю. Но здесь имеет место быть один нюанс: на уровне IL Bar.Dispose после введения интерфейса будет выглядеть вот так: Код: c# 1. (ключевое слово выделено). Точно так же выглядит определение Dispose у Foo. Т.е. мы вместо переопределения (override) метода: Код: c# 1. просто добавили в vtable новый слот с Dispose. При корректной реализации вызовов Dispose базовых классов при приведении к интерфейсу всё будет в порядке. А вот при приведении к классам в иерархии наследования поведение будет меняться в зависимости от того, к чему приводим, и вне зависимости от фактического типа: Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. - это потенциальный источник очень трудновылавливаемых граблей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 08:18 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловны Код: plaintext 1. 2. 3. 4. 5. 6. 7. - это потенциальный источник очень трудновылавливаемых граблей. Взгляните с другой стороны: описанное повидение является нормальным для всех перегруженух функций. Другими словами, продолжая вашу мысль: все не виртульные функции - потенциальный источник труднообнаружимых ошибок. Я не буду спорить с этим, но в шарпе такие правила игры. И если их принимать как данность то логично две поведенческих модели: или признать переопределение нормальной практикой и удельть этому внимание при разработке, или делать все методы виртуальными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 10:32 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
mikronИ если их принимать как данность то логично две поведенческих модели: или признать переопределение нормальной практикой и удельть этому внимание при разработке, или делать все методы виртуальными. Это крайности, я придерживаюсь середины: не делаю все методы виртуальными, но и переопределение нормой не считаю, и использую его только в самых крайних случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 10:37 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловны, Это дскретный выбор. Вы выбрали первое, а остальное только ваши личные предпочтения. Если вы работаете с чужим кодом то вам придётся мирится с правилами игры и всегда брать их во внимание. Дрыгими словами пъёте вы чай с сахаром или без не меняет того что вам подадут в кафе. Исли у ТС нет возможности изменить базовый класс, то вполне нормально перегрузить метод и жить с этой болью. ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 10:52 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
mikronИсли у ТС нет возможности изменить базовый класс, то вполне нормально перегрузить метод и жить с этой болью. ИМХО. Разумеется. Речь о ситуациях, где есть возможность выбора. Да и в случае ТС мы знаем только то, что ему приспичило возиться с наследованием. Хотя, вполне возможно, выходом было бы агрегирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 11:07 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныmikronИсли у ТС нет возможности изменить базовый класс, то вполне нормально перегрузить метод и жить с этой болью. ИМХО. Разумеется. Речь о ситуациях, где есть возможность выбора. Да и в случае ТС мы знаем только то, что ему приспичило возиться с наследованием. Хотя, вполне возможно, выходом было бы агрегирование. не приспичило мне, просто нужно сделать обязательно некторые действия на разрушении объекта, а тут такое ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 11:36 |
|
||
|
new void Dispose()
|
|||
|---|---|---|---|
|
#18+
mikronИ угадайте, что будет, если сделать вот-так: Код: c# 1. А так? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2016, 12:25 |
|
||
|
|

start [/forum/topic.php?fid=20&fpage=52&tid=1400205]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 156ms |

| 0 / 0 |
