IDisposable, pernyataan using
Implementasikan IDisposable, gunakan pernyataan using untuk pembersihan deterministik, dan bandingkan dengan try/finally manual. Khusus C# 6.
IDisposable, pernyataan using adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 3 pelajaran total.
Mengapa IDisposable + using
Tujuan: Bebaskan sumber daya secara deterministik.
- Implementasikan IDisposable
- Gunakan pernyataan using (C# 6)
- Bandingkan dengan try/finally
- Jaga agar pembersihan tetap kecil dan aman
Implementasikan IDisposable
Implementasikan IDisposable.Dispose untuk membebaskan sumber daya (berkas, soket, pegangan). Pastikan operasi ini idempoten.
using System;
// Simple disposable that tracks whether it was cleaned up
public sealed class FakeConnection : IDisposable
{
public bool IsOpen { get; private set; }
public FakeConnection()
{
IsOpen = true;
Console.WriteLine("Open");
}
public void Dispose()
{
if (IsOpen)
{
IsOpen = false;
Console.WriteLine("Close");
}
}
}
public class Program
{
public static void Main(string[] args)
{
FakeConnection c = new FakeConnection();
c.Dispose(); // manual cleanup
}
}
Pola try/finally
try/finally menjamin pembersihan, tetapi penulisannya panjang dan mudah terlupakan. Pernyataan using adalah bentuk singkatnya.
using System;
public sealed class FakeConnection : IDisposable
{
public void Dispose() { Console.WriteLine("Dispose called"); }
public void Send(string msg) { Console.WriteLine("Send: " + msg); }
}
public class Program
{
public static void Main(string[] args)
{
// Manual try/finally
FakeConnection a = null;
try
{
a = new FakeConnection();
a.Send("A");
throw new Exception("boom");
}
finally
{
if (a != null) a.Dispose(); // runs even on exception
}
// unreachable due to thrown exception in this demo
}
}
Demonstrasi pernyataan using
Pernyataan using membungkus try/finally tersembunyi; Dispose dipanggil saat blok berakhir.
using System;
public sealed class FakeConnection : IDisposable
{
public void Dispose() { Console.WriteLine("Dispose called"); }
public void Work() { Console.WriteLine("Working"); }
}
public class Program
{
public static void Main(string[] args)
{
try
{
using (FakeConnection c = new FakeConnection())
{
c.Work();
throw new InvalidOperationException("oops");
} // Dispose runs here automatically
}
catch (Exception)
{
Console.WriteLine("Handled");
}
}
}
I/O dengan using
Sebagian besar jenis I/O mengimplementasikan IDisposable. Gunakan using agar pegangan segera ditutup.
using System;
using System.IO;
public class Program
{
public static void Main(string[] args)
{
// Create a small temp file then read it
string path = "demo.txt";
File.WriteAllText(path, "hello");
using (StreamReader r = new StreamReader(path))
{
string text = r.ReadToEnd();
Console.WriteLine(text);
} // r.Dispose() closes the file handle
}
}
Kiat & jebakan using
Kiat:
- Utamakan using daripada pemanggilan Dispose secara manual.
- Jaga agar Dispose tetap kecil dan aman (jangan melempar pengecualian jika memungkinkan).
- Jangan gunakan objek setelah objek tersebut dibuang.
- Untuk beberapa sumber daya, susun blok using secara bertingkat untuk mengendalikan urutannya.
Jaminan pernyataan using
Ringkasan
Ringkasan: Implementasikan IDisposable untuk sumber daya dan bungkus penggunaannya dalam blok using guna memastikan pembersihan melalui try/finally tersembunyi dalam C# 6.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “IDisposable, pernyataan using” gratis?
Ya — teks lengkap “IDisposable, pernyataan using” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “IDisposable, pernyataan using”?
Implementasikan IDisposable, gunakan pernyataan using untuk pembersihan deterministik, dan bandingkan dengan try/finally manual. Khusus C# 6. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.
Berapa lama pelajaran “IDisposable, pernyataan using” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- try/catch/finally, throw new vs lempar ulang
- Pengecualian khusus; perancangan kesalahan
- IDisposable, pernyataan using