0Pricing
C# Academy · บทเรียน

IDisposable และคำสั่ง using

นำ IDisposable ไปใช้งาน ใช้คำสั่ง using เพื่อทำความสะอาดทรัพยากรอย่างแน่นอน และเปรียบเทียบกับ try/finally แบบทำเอง สำหรับ C# 6 เท่านั้น

IDisposable และคำสั่ง using เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

เหตุผลที่ใช้ IDisposable และ using

เป้าหมาย: ปลดปล่อยทรัพยากรอย่างแน่นอน

  • ใช้งาน IDisposable
  • ใช้คำสั่ง using (C# 6)
  • เปรียบเทียบกับ try/finally
  • ทำให้การทำความสะอาดมีขนาดเล็กและปลอดภัย

ใช้งาน IDisposable

ใช้งาน IDisposable.Dispose เพื่อปล่อยทรัพยากร (ไฟล์ ซ็อกเก็ต แฮนเดิล) และทำให้การทำงานซ้ำได้อย่างปลอดภัย

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
  }
}

รูปแบบ try/finally

try/finally รับประกันการทำความสะอาด แต่มีโค้ดมากและลืมได้ง่าย คำสั่ง using เป็นรูปแบบย่อ

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
  }
}

ตัวอย่างคำสั่ง using

คำสั่ง using จะห่อหุ้ม try/finally ที่ซ่อนอยู่ และจะเรียก Dispose เมื่อจบบล็อก

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 ด้วย using

ชนิด I/O ส่วนใหญ่ใช้งาน IDisposable ใช้ using เพื่อให้แฮนเดิลถูกปิดอย่างรวดเร็ว

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
  }
}

เคล็ดลับและข้อควรระวังเรื่อง using

เคล็ดลับ:

  • เลือกใช้ using แทนการเรียก Dispose ด้วยตนเอง
  • ทำให้ Dispose มีขนาดเล็กและปลอดภัย (หากเป็นไปได้อย่าให้เกิดข้อยกเว้น)
  • อย่าใช้ออบเจ็กต์หลังจากถูกทำลายแล้ว
  • สำหรับทรัพยากรหลายรายการ ให้ซ้อนบล็อก using เพื่อควบคุมลำดับ

การรับประกันของคำสั่ง using

ตรวจสอบอย่างรวดเร็ว: คำสั่ง using รับประกันอะไรสำหรับออบเจ็กต์ IDisposable

ทบทวน

ทบทวน: ใช้งาน IDisposable กับทรัพยากร และห่อการใช้งานไว้ในบล็อก using เพื่อให้แน่ใจว่ามีการทำความสะอาดผ่าน try/finally ที่ซ่อนอยู่ใน C# 6

คำถามที่พบบ่อย

บทเรียน “IDisposable และคำสั่ง using” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “IDisposable และคำสั่ง using” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “IDisposable และคำสั่ง using”

นำ IDisposable ไปใช้งาน ใช้คำสั่ง using เพื่อทำความสะอาดทรัพยากรอย่างแน่นอน และเปรียบเทียบกับ try/finally แบบทำเอง สำหรับ C# 6 เท่านั้น คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน

บทเรียน “IDisposable และคำสั่ง using” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. try/catch/finally, throw new เทียบกับการโยนซ้ำ
  2. ข้อยกเว้นแบบกำหนดเองและการออกแบบข้อผิดพลาด
  3. IDisposable และคำสั่ง using
← กลับไปที่ C# Academy