Слайд 2IComparer
если первый объект больше второго, то возвращается число больше 0,
если меньше
![IComparer если первый объект больше второго, то возвращается число больше 0, если](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-1.jpg)
- то число меньше нуля;
если оба объекта равны, возвращается ноль.
Слайд 4IEnumerable
Интерфейс IEnumerable имеет метод, возвращающий ссылку на другой интерфейс - перечислитель:
public interface
![IEnumerable Интерфейс IEnumerable имеет метод, возвращающий ссылку на другой интерфейс - перечислитель:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-3.jpg)
IEnumerable
{
IEnumerator GetEnumerator();
}
Слайд 5IEnumerator
Интерфейс IEnumerator определяет функционал для перебора внутренних объектов в контейнере.
![IEnumerator Интерфейс IEnumerator определяет функционал для перебора внутренних объектов в контейнере.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-4.jpg)
Слайд 6IEnumerator
public interface IEnumerator
{
bool MoveNext(); // перемещение на одну позицию вперед в контейнере
![IEnumerator public interface IEnumerator { bool MoveNext(); // перемещение на одну позицию](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-5.jpg)
элементов
object Current {get;} // текущий элемент в контейнере
void Reset(); // перемещение в начало контейнера
}
Слайд 10IDispolable
Предоставляет механизм для освобождения управляемых и неуправляемых ресурсов.
void Dispose()
![IDispolable Предоставляет механизм для освобождения управляемых и неуправляемых ресурсов. void Dispose()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-9.jpg)
Слайд 11Ресурсы
Существуют два различных подхода, которые можно применять для создания класса, способного производить
![Ресурсы Существуют два различных подхода, которые можно применять для создания класса, способного](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-10.jpg)
очистку и освобождать внутренние неуправляемые ресурсы.
Слайд 12Ресурсы
Первый подход заключается в переопределении метода System.Object.Finalize() и позволяет гарантировать то, что
![Ресурсы Первый подход заключается в переопределении метода System.Object.Finalize() и позволяет гарантировать то,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-11.jpg)
объект будет очищать себя сам во время процесса сборки мусора (когда бы тот не запускался) без вмешательства со стороны пользователя.
Слайд 13Ресурсы
Второй подход предусматривает реализацию интерфейса IDisposable и позволяет обеспечить пользователя объекта возможностью
![Ресурсы Второй подход предусматривает реализацию интерфейса IDisposable и позволяет обеспечить пользователя объекта](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-12.jpg)
очищать объект сразу же по окончании работы с ним.
Однако если пользователь забудет вызвать метод Dispose(), неуправляемые ресурсы могут оставаться в памяти на неопределенный срок.
Слайд 14Ресурсы
Если пользователь объекта не забыл вызвать метод Dispose(), можно проинформировать сборщик мусора
![Ресурсы Если пользователь объекта не забыл вызвать метод Dispose(), можно проинформировать сборщик](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-13.jpg)
о пропуске финализации, вызвав метод GC.SuppressFinalize().
Если же пользователь забыл вызвать этот метод, объект рано или поздно будет подвергнут финализации и получит возможность освободить внутренние ресурсы.
Слайд 15Виды ресурсов
Неуправляемые ресурсы - это разнообразные файловые хэндлы, оконные, всякие объекты синхронизации,
![Виды ресурсов Неуправляемые ресурсы - это разнообразные файловые хэндлы, оконные, всякие объекты](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-14.jpg)
соединения с базой данных
Управляемые ресурсы - всё, что создаётся средствами .net, и все объекты
Слайд 16Сборщик мусора
Сборщик мусора автоматически освобождает память, выделенную для управляемого объекта, если этот
![Сборщик мусора Сборщик мусора автоматически освобождает память, выделенную для управляемого объекта, если](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-15.jpg)
объект больше не используется.
Сборщик мусора не имеет сведений о неуправляемых ресурсов, таких как дескрипторы окон, или открытые файлы и потоки.
Слайд 17IDispolable
Использование метода Dispose, позволяет явно освобождать неуправляемые ресурсы вместе со сборщиком мусора.
![IDispolable Использование метода Dispose, позволяет явно освобождать неуправляемые ресурсы вместе со сборщиком](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-16.jpg)
Пользователь объекта может вызвать этот метод, когда объект больше не нужен.
Слайд 19IDispolable
Если есть подключение к файлу или к БД, которое «живет» на всем
![IDispolable Если есть подключение к файлу или к БД, которое «живет» на](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/842161/slide-18.jpg)
протяжении работы объекта класса, то в Displose в секторе удаления управляемой памяти нужно вызывать методы Dispose этих классов.