0Pricing
C# Academy · Ders

IDisposable ve using deyimi

IDisposable uygulayın, belirleyici temizleme için using deyimini kullanın ve bunu elle yazılan try/finally ile karşılaştırın. Yalnızca C# 6.

IDisposable ve using deyimi, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.

IDisposable ve using neden gerekli

Amaç: Kaynakları belirli ve öngörülebilir biçimde serbest bırakmak.

  • IDisposable uygulayın.
  • using ifadesini (C# 6) kullanın.
  • try/finally ile karşılaştırın.
  • Temizleme işlemini küçük ve güvenli tutun.

IDisposable uygulama

Kaynakları (dosyalar, soketler ve tanıtıcılar) serbest bırakmak için IDisposable.Dispose uygulayın. İşlemi birden çok kez çağrıldığında da güvenli olacak şekilde tasarlayın.

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 deseni

try/finally temizlemeyi garanti eder; ancak ayrıntılıdır ve unutulması kolaydır. using ifadesi bunun kısa biçimidir.

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 ifadesi gösterimi

using ifadesi, görünmeyen bir try/finally bloğunu kapsar; blok sona erdiğinde Dispose çağrılır.

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");
    }
  }
}

using ile G/Ç

Çoğu G/Ç türü IDisposable uygular. Tanıtıcıların zamanında kapatılması için using kullanın.

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 ipuçları ve tuzaklar

İpuçları:

  • Elle Dispose çağrıları yapmak yerine using kullanmayı tercih edin.
  • Dispose işlemini küçük ve güvenli tutun (mümkünse özel durum fırlatmayın).
  • Nesneler serbest bırakıldıktan sonra onları kullanmayın.
  • Birden çok kaynak için sırayı denetlemek üzere using bloklarını iç içe yerleştirin.

using ifadesinin garantisi

Hızlı kontrol: using ifadesi, IDisposable uygulayan bir nesne için neyi garanti eder?

Tekrar

Tekrar: Kaynaklar için IDisposable uygulayın ve C# 6'da görünmeyen bir try/finally aracılığıyla temizlemeyi güvence altına almak için kullanımı bir using bloğuna sarın.

Sıkça Sorulan Sorular

“IDisposable ve using deyimi” dersi ücretsiz mi?

Evet — “IDisposable ve using deyimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.

“IDisposable ve using deyimi” dersinde ne öğreneceğim?

IDisposable uygulayın, belirleyici temizleme için using deyimini kullanın ve bunu elle yazılan try/finally ile karşılaştırın. Yalnızca C# 6. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.

“IDisposable ve using deyimi” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. try/catch/finally, throw new ve yeniden fırlatma
  2. Özel istisnalar ve hata tasarımı
  3. IDisposable ve using deyimi
← C# Academy Sayfasına Dön