C# - Egy objektum élettartamának szabályozása

forráskód letöltése
Egy-egy objektumnak általában csak a létrehozásával kell foglalkoznunk. A lefoglalt erőforrások felszabadítása automatikusan megtörténik a GC (Garbage Collector) által. Előfordulhat azonban olyan eset, hogy egy-egy objektumunkról tudjuk a programozás során, hogy a továbbiakban már nem lesz rá szükségünk. Ekkor rendelkezhetünk magunk is arról, hogy meddig legyen használható ez az objektum.
Erre használhatjuk a using kulcsszót. Amikor létrehozunk egy új objektumot ennek segítségével, akkor megadhatunk egy kódblokkot, melyben a létrehozott objektum érvényesnek tekinthető. A blokk után az objektum megszűnik, a lefoglalt erőforrások felszabadulnak.
Alábbi példában létrehozunk egy Pen osztály példányát, amelyről tudjuk, hogy a DrawEllipse hívása után már nem lesz rá szükségünk, ezért a using segítségével egy olyan blokkba foglaljuk, mely csak a DrawEllipse hívására terjed ki.
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
      Graphics g = e.Graphics;
      using (Pen p = new Pen(Color.Red, 10))
      {
        g.DrawEllipse(p, 10, 10, 100, 100);
      }
Miután a p nevű Pen típusú változó felszabadult, akár létre is hozhatunk egy ugyanilyen nevű változót más tartalommal. A using használata nélkül itt hibaüzenetet kapnánk, hiszen már másodszor deklaráljuk a p nevű változót.
      using (Pen p = new Pen(SystemColors.Control, 5))
      {
        g.DrawEllipse(p, 10, 10, 100, 100);
      }
    }