Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Переприсвоение значения переменной


Автор: kin 11.11.2016, 16:02
Здравствуйте Уважаемые!
Суть вопроса в следующем: по условию задачи некоторая переменная в зависимости от условий может принимать значения базового класса или производных от него.
Можно ли этот код считать нормальным, в частности, на предмет  отсутствия различных потерянных ссылок и всяких  там утечек памяти, и как это лучше сделать?
Код

BaseClass _val=new BaseClass();
<... что-то делаем>
_val=new DerivedClass();
<... что-то делаем>
_val=new AnotherDerivedClass();
<... что-то делаем>
 

Автор: a0730 13.11.2016, 18:04
В С# мусор убирается автоматически, поэтому можно бросать объекты.
Но там тоже есть проблемы связанные с освобождением неуправляемых ресурсов.
Например, файлы, сокеты, соединения с базами данных и т.п.
Так что, допустимость приведённого кода зависит от того, что делают классы.


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_5828810c0ef42f1836745f5b_0

Автор: a0730 13.11.2016, 18:04
В С# мусор убирается автоматически, поэтому можно бросать объекты.
Но там тоже есть проблемы связанные с освобождением неуправляемых ресурсов.
Например, файлы, сокеты, соединения с базами данных и т.п.
Так что, допустимость приведённого кода зависит от того, что делают классы.


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_5828810c0ef42f1836745f5b_0

Автор: a0730 13.11.2016, 18:04
В С# мусор убирается автоматически, поэтому можно бросать объекты.
Но там тоже есть проблемы связанные с освобождением неуправляемых ресурсов.
Например, файлы, сокеты, соединения с базами данных и т.п.
Так что, допустимость приведённого кода зависит от того, что делают классы.


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_5828810c0ef42f1836745f5b_0

Автор: a0730 13.11.2016, 18:04
В С# мусор убирается автоматически, поэтому можно бросать объекты.
Но там тоже есть проблемы связанные с освобождением неуправляемых ресурсов.
Например, файлы, сокеты, соединения с базами данных и т.п.
Так что, допустимость приведённого кода зависит от того, что делают классы.


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_5828810c0ef42f1836745f5b_0

Автор: a0730 13.11.2016, 18:04
В С# мусор убирается автоматически, поэтому можно бросать объекты.
Но там тоже есть проблемы связанные с освобождением неуправляемых ресурсов.
Например, файлы, сокеты, соединения с базами данных и т.п.
Так что, допустимость приведённого кода зависит от того, что делают классы.


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_5828810c0ef42f1836745f5b_0

Автор: chupachups 14.11.2016, 09:53
Для избежания проблем с освобождением ресурсов необходимо корректно реализовать интерфейс IDisposible, а если еще добавить деструктор - то вообще все в шоколаде будет

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_58295f5c0ef42f1ed87b2261_0

Автор: chupachups 14.11.2016, 09:53
Для избежания проблем с освобождением ресурсов необходимо корректно реализовать интерфейс IDisposible, а если еще добавить деструктор - то вообще все в шоколаде будет

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_58295f5c0ef42f1ed87b2261_0

Автор: chupachups 14.11.2016, 09:53
Для избежания проблем с освобождением ресурсов необходимо корректно реализовать интерфейс IDisposible, а если еще добавить деструктор - то вообще все в шоколаде будет

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_58295f5c0ef42f1ed87b2261_0

Автор: chupachups 14.11.2016, 09:53
Для избежания проблем с освобождением ресурсов необходимо корректно реализовать интерфейс IDisposible, а если еще добавить деструктор - то вообще все в шоколаде будет

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_58295f5c0ef42f1ed87b2261_0

Автор: chupachups 14.11.2016, 09:53
Для избежания проблем с освобождением ресурсов необходимо корректно реализовать интерфейс IDisposible, а если еще добавить деструктор - то вообще все в шоколаде будет

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Pereprisvoyeniye-znacheniya-peremennoy-id5825c193b4c92c32a3153cc2#findElement_E7045_58295f5c0ef42f1ed87b2261_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)