Vladimir
управление памятью в дотнете делается через IDisposable, деконструкторы насколько я знаю исключительно для защиты от дурака
Anatoly
Vladimir
управление памятью в дотнете делается через IDisposable, деконструкторы насколько я знаю исключительно для защиты от дурака
но мб я ошибаюсь, поправьте меня) на мой взгляд защищаться деконструкторами от тех кому эти деконструкторы поддерживать и писать - не логично
Anatoly
управление памятью в дотнете делается через IDisposable, деконструкторы насколько я знаю исключительно для защиты от дурака
и да, и нет. через диспозабл делается детерминированное управление любыми ресурсами
Vasily
Anatoly
деструкторы (а не деконструкторы, деконструктор это var (a, b) = tuple) имеют ограниченную область применимости и их использование очень нишевое
Ayrat
управление памятью в дотнете делается через IDisposable, деконструкторы насколько я знаю исключительно для защиты от дурака
Неуправляемые ресурсы надо в финализаторе дублировать, так как диспоуз могут не вызвать
Anatoly
мы туда в дебаг моде ассерты кидали
Vasily
Короче, нипанятна
Vasily
При чем тут сетевой стек
Anatoly
Химера такое , говорят
я из секты Биглраша, уже посмотрел на ютубе, выглядит норм
Anatoly
вот в сети, где важен перф, я бы деструкторы не использовал. я видел на днях статью, что от этого всё плохо становится
Vasily
Вот у меня в мобилке сетевой стек не использует финализаторы, и память тоже не жрет особо
Vasily
@ExcpOccured , ОБЪЯСНИСЬ
Ayrat
Вот у меня в мобилке сетевой стек не использует финализаторы, и память тоже не жрет особо
А ты его сам писал? В дотнете сейф хендлы юзают финализаторы
Ayrat
То есть как только ты анменеджед хендлы обернул в сейф обертки (дотнет такие даёт), тебе дальше по стеку только диспоуз можно звать
Vasily
Намазано ArraySegment еще
Ayrat
PipeLines.Sockets.UnOfficial+ ArrayPool
Не смотрел сорцы, но от сокетов веет анменеджед хендлами за версту
Vasily
Ну в сокетах понятно, что это есть
Danil
@ExcpOccured , ОБЪЯСНИСЬ
Например UDP, есть структура, которая отвечает за запросы к DNS, создать соединение - большая трата ресурсов, а в силу того, что это UDP - гарантии получения ответа у нас нет, поэтому в случае если мы не получили никаких данных, мы можем соответственно деструктурировать такую структуру
Vladimir
так а деструктор зачем? почему не udp.Dispose()?
Vladimir
согласен)
Anatoly
деконструктор - это когда тупл на элементы раскладываешь
Anatoly
Химера такое , говорят
да, она не смогла найти дискретную карточку, дура, запустилась на встроенной и говорит "бля, карточка говно"
Danil
Да деструктор, деструктор
Ayrat
А что за деструктор в сишарпе?
Vasily
Мне кажется, какой-то оверинжиниринг
Ayrat
class A { ~A() { } }
Так это ж финализатор
Ayrat
Который не вызывается на деструкции объекта, а хз когда
Vladimir
Так это ж финализатор
а можно и так и так называть) я где-то статью видел
Vasily
@omgszer , там задача, кмк, все же унизить людей на собеседовании :)
Danil
так а деструктор зачем? почему не udp.Dispose()?
Потому что нужна была логика с оверайдом поведения перед диспозом/финалайзом, например сохранить в кеш какие нибудь данные в виде настроек
Ayrat
а можно и так и так называть) я где-то статью видел
Не, не стоит путать. У нас рантайм написан на плюсах где есть настоящий деструктор
Vladimir
Ayrat
What is destructor? Destructor is a member function which destructs or deletes an object. When is destructor called? A destructor function is called automatically when the object goes out of scope: (1) the function ends (2) the program ends (3) a block containing local variables ends (4) a delete operator is called 
Danil
Мать моя женщина
Тебе же нужно гарантировано в конечном итоге данные получить
Viacheslav
где-то я читал, что это при создании дотнета ошиблись и с тех пор так и пошло. разница, насколько я помню, в вызове (что-то астоматом вызывается, а что-то надо руками)
Anatoly
вроде когда гц соберёт, не?
это и есть хз когда
Ayrat
это из С++
Я ж сказал что да, но поведение разное. Деструктор детерминирован, финализатор нет
Vasily
Ну т.е. я подозреваю, что финализаторы - не оптимальное решение проблемы
Vladimir
Я ж сказал что да, но поведение разное. Деструктор детерминирован, финализатор нет
ну все же надо делать поправку на язык) в разных языках одним и тем же словом часто называются разные вещи
Viacheslav
это и есть хз когда
а, в этом смысле
Ayrat
деструктор в С++ - да, деструктор в C# - нет
Но в сишарпе это называют финализатор -_-
Anatoly
Но в сишарпе это называют финализатор -_-
тебе привели выше цитату, что и так, и эдак. но финализатор правильнее, да
Ayrat
SupressFinalize, а не SupressDestruction
Vladimir
Ну вот тебе спека по сишарпу https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/classes#destructors
Ayrat
Фпесду их нейминг
Vladimir
только что узнал что бывают экстернал деструкторы)
Ayrat
Это для интеропа наверное, но да, забавно
Ayrat
Типа ты можешь заставить дотнет вызвать нативный деструктор как финализатор....
Vladimir
Vasily
Но главное в таких замутах - ощущение собственной элитарности
Mark
Душим сеньоров на собеседовании, спрашиваем: Наследуется ли деконструктор и что делает конструкция array[^1]
первое понятно, если нужно знать детали gc на проекте, но второе зачем спрашивать? это ж синьоры
Mark
это ж просто вопрос на знание какой-то детали в синтаксисе, синьоры занимаются более важными вещами
Danil
это ж просто вопрос на знание какой-то детали в синтаксисе, синьоры занимаются более важными вещами
Это не относится к синтаксису, это можно повторить на множестве языков, просто проверка эрудиции
Mark
зачем заучивать все детали как там доставать элемент из конца, какой оператор для этого используется... Если синьору это понадобится то попросит джуна это сделать или зайдет в доки и узнает
Mikhαil
Дайте видос из тру детектив где маканаги говорит «я такой охуенно важный»
Mikhαil
Тут прям к месту будет
Vasily
Я ж грю, элитизм
Vladimir
ну, я скорее второй вопрос одобряю - следит ли человек за состоянием своей технологии
Mikhαil
ну, я скорее второй вопрос одобряю - следит ли человек за состоянием своей технологии
Хз. Можно его без конкретики задать, не завязываясь на одну конкретную фичу. Мне понравился вопрос в стиле «следишь ли за развитием языка, какая фича в последнем шарпе понравилась, почему, какие ждёшь в следующем»
Doge
Вот задачки на подушить:
Doge
Как-то раз на досуге придумал пару небольших задачек про производительность. В каждой из задач два варианта исполнения одного и того же кода, только один из них исполняется сильно медленее другого. Вопрос в том, чтобы обьяснить почему так. Сами задачи на js, чтобы было легко исполнить их в браузере: https://jsfiddle.net/djth9oq7/ https://jsfiddle.net/3smxuh1o/
Doge
Дисклеймер: я их на собесах не задаю, если что