Menü

  • Ana Sayfa
  • Kimim Ben ?
  • Bağlan Bana ;)

Yazılımcı ne yazar ?

  • C#.Net
  • Asp.Net
  • Ado.Net
  • Sql Server
  • XML
  • Javascript
  • Web Service
  • Portable Hayat
  • Diğer

Başka Şeyler

  • Günün İçinden
  • Yazılarım
  • Kitaplık
  • Beyaz Perdem

Micro Blog

ne geçmiş tükendi ne yarınlar ... hayat yeniler bizleri. geçsede yolumuz bozkırlardan, denizlere çıkar sokaklar ...

Soru Sor ;)

Hakkımda öğrenmek ve sormak istediklerinizi buradaki adresten dilediğiniz gibi sorabilirsiniz. Sorularınızı bekliyorum (;
 

Metotlarda ref ve out kullanımı

Share


Metotlar konusunda reference ve value type olarak parametre almaları konusuna değindikten sonra son olarak ref ve out anahtar kelimelerinin hangi amaçla ve nasıl kullanıldığını örneklerle görelim.

Hatırlarsanız önceki makalede value type olarak parametre alan metoda örnek verirken main() metodu içindeki ana değişkeni etkilemediğinden bahsetmiştik. Buradan çıkan sonuçta value typeların RAM'de Stack bölgesinde tutuluyor olmasıydı. Hatırlayalım :

class Program
    {
        static void Main(string[] args)
        {
            int x = 10;
            Console.WriteLine(x);
            Func(x);
            Console.WriteLine(x);
            Console.ReadLine();
        }
 
        static void Func(int k)
        {
            k = 5;
        }
    }

Yukarıdaki programı çalıştırdığınızda ekrana iki kere 10 yazacağını göreceksiniz. Şimdi ref anahtar sözcüğü ile metodumuza value type olan bir parametreyi referenca typemış gibi davranmasını sağlayabiliyoruz.

class Program
    {
        static void Main(string[] args)
        {
            int x = 10;
            Console.WriteLine(x);
            Func(ref x);
            Console.WriteLine(x);
            Console.ReadLine();
        }
 
        static void Func(ref int k)
        {
            k = 5;
        }
    }

Programı çalıştırdığımızda ekrana önce 10 ardından 5 yazdırdığını göreceksiniz. Bunun anlamı dışarıdan value type olarak geçirilecek olan parametre reference type olarak işlem görür.

Hemen out sözcüğünün kullanımına bakalım. ref anahtar sözcüğü kullanılırken parametre aktarımında ilk değerin verilmiş olması gerekir. Aksi takdirde program derlenmez. Eğer ilk değer vermek istemiyorsanız ya da program onu gerektiriyorsa out anahtar sözcüğü ile metodlara parametre geçirilir. Örneğimizde görelim : 

class Program
    {
        static void Main(string[] args)
        {
            int x;
           
            Func(out x);
            Console.WriteLine(x);
            Console.ReadLine();
        }
 
        static void Func(out int k)
        {
            k = 5;
        }
    }

Yukarıdaki program çalıştırıldığında ekrana 5 yazdıracaktır. Önceki örnekten farkı ise Main() metodu içinde x değişkeni ilk değeri atanmamıştır.


24 Kasım 2009 Salı öğleden sonra 12:50

Mesajınızı yazabilirsiniz


Rumuz :  
 
Email :   
  
Mesaj :  
Bu konuya abone olmak ister misiniz ?