TGViewer
C# | Вопросы собесов C# | Вопросы собесов @easy_c_sharp · 5.01K subscribers
Post #2444 621
🤔 Что такое Dispose?

Dispose метод является частью паттерна управления ресурсами, известного как "Dispose Pattern". Этот метод реализуется в классах через интерфейс IDisposable. Цель — явное освобождение неуправляемых ресурсов и, по желанию, управляемых ресурсов, прежде чем сборщик мусора освободит объект. Это важно для эффективного управления памятью и другими системными ресурсами.

🚩Неуправляемые и управляемые ресурсы

🟠Неуправляемые ресурсы
включают в себя ресурсы, которые не управляются средой CLR (Common Language Runtime), например, файловые дескрипторы, сетевые соединения или указатели на память, выделенную вне .NET среды.
🟠Управляемые ресурсы
это объекты .NET, которые занимают память и потенциально удерживают ссылки на неуправляемые ресурсы.

🚩Как он работает

Должен освобождать все неуправляемые ресурсы, занимаемые объектом, а также должен иметь возможность освобождать управляемые ресурсы, если это необходимо. Как правило, управляемые ресурсы освобождаются сами сборщиком мусора, но если управляемый ресурс включает в себя неуправляемые ресурсы, тогда Dispose может быть вызван для их явного освобождения.
public class ResourceHolder : IDisposable
{
private bool disposed = false;

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Освобождение управляемых ресурсов
}
// Освобождение неуправляемых ресурсов
disposed = true;
}
}

~ResourceHolder()
{
Dispose(false);
}
}


Пример использования Dispose
using (var resource = new ResourceHolder())
{
// Использование ресурса
}
// Метод Dispose автоматически вызывается при выходе из блока using


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_c_sharp
  1. Oct 9, 2026Post #2474
  2. Oct 9, 2026🤔 Что такое interlocked? Interlocked — это механизм для безопасного изменения чисел между…
  3. Oct 9, 2026🤔 Что такое сборщик мусора? Сборщик мусора (Garbage Collector, GC) — это форма автоматиче…
  4. Oct 8, 2026🤔 Какая разница между методом clone и CopyTo массивов? - clone() — создает новый массив с…
  5. Oct 8, 2026🤔 Какие тесты бывают? 🚩Виды 🟠Юнит-тесты Предназначены для проверки отдельных компоненто…
  6. Oct 7, 2026🤔 Можно ли в рамках lock использовать await? Нет, нельзя. Ожидание с await может привести…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →