Встречается на собеседованиях • сегодня

Использовал ли неуправляемые ресурсы в C#

Да, использовал. В C# неуправляемые ресурсы (например, файловые потоки, соединения с БД, дескрипторы ОС) требуют явного освобождения. Для этого применяют:

  1. IDisposable и using – предпочтительный способ:
csharp
using (var file = new FileStream("test.txt", FileMode.Open))
{
    // работа с файлом
} // автоматический вызов Dispose()
  1. Реализация IDisposable в своих классах:
csharp
public class ResourceHolder : IDisposable
{
    private IntPtr handle; // пример неуправляемого ресурса
    
    public void Dispose()
    {
        ReleaseUnmanagedResources();
        GC.SuppressFinalize(this);
    }
    
    ~ResourceHolder() => ReleaseUnmanagedResources();
    
    private void ReleaseUnmanagedResources()
    {
        if (handle != IntPtr.Zero)
        {
            CloseHandle(handle); // вызов нативного метода
            handle = IntPtr.Zero;
        }
    }
}

Ключевое: всегда освобождать ресурсы явно, либо через using, либо вызывая Dispose(). Финализатор – резервный вариант на случай утечки.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы