در دات نت هروقت شما با چیزی کار می کنید که شامل کد مدیریت نشده هست باید از Using استفاده کنید. این یک توصیه در جهت استفاده ی بهینه از منابع سیستم است و لزما باعث عدم اجرای برنامه یا باگ نمی شود. امروزه سیستمها منابع استفاده نشده ی زیادی دارند و به چالش کشیدن چند گیگابایت رم با پردازنده های چند هسته ای به این آسانی ها ممکن نیست.
منظور از کد مدیریت شده Managed Code این هست که کد در زمان لازه به طور خوکار از حافظه خارج میشود. به طور کلی کلاسهای دات نت دارای این قابلیت هستند. اما بخشهای از دات نت به منابع خارجی (مثل فایلها یا دیتابیس ها یا موتورهای بازی و اشیای COM ...) متصل میشوند که با دات نت نوشته نشده اند و تضمینی برای خالی شدن حافظه بعد از پایان کارشان نمی دهند. به این نوع کدها Unmanaged Code یا کد مدیریت نشده گفته میشود.
هر وقت شما با کد مدیریت نشده سروکار داره بهتر است آن بخش درون یک Using قرار بگیرد.
هر وقت شما کلاسی تعریف کردید و درون اون کلاس از اینترفیس IDisposable استفاده کردید یعنی شما مجبور بودید برای خالی کردن منابع کلاس مستقیما کد نویسی کنید (UnManaged Code دارید)
در این مواقع هم باید از Using استفاده کنید.