Здравствуйте, netch80, Вы писали:
N>Передёргиваете. Не всё "на автомате", но сильно больше, чем у C++, легче контролируемо и диагностируемо. И переусложнённость последнего это фактор, независимый от его unmanaged характера.
Не передергиваю, а подчеркиваю, что не настолько сильно, как многие хотят это показать. У C++ есть свои преимущества, причем весомые.
N>Если писать, как seen on national TV рекомендовано в книге, то работает без вреда.
Вот именно, расхлябанность, присущая многим C# разработчикам, проистекает из базовых рекоммендаций. Подумаешь, беда — Dispose вызвался не один раз, а три. А можно вообще не вызывать — памперс все впитает. Во всем вот это вот "срала-мазала", тьфу, терпеть этого не могу.
N>Вроде ж позволяет? Типа p->~C()
N>Или уже запретили? Не следил за этим моментом.
Да написать-то можно все, что угодно. Только повторный вызов деструктора, как и любое обращение к членам объекта после окончания времени его жизни, квалифицируется стандаром языка как UB. Время жизни объекта заканчивается при входе в деструктор. При первом же входе, разумеется. И во многих случаях это UB приводит к реальным проблемам в runtime. Вот, пожалуйста, простейшая иллюстрация:
https://ideone.com/mJUlON