Metot Geri Dönüşleri Üzerine

23 Haziran Çarşamba, 2010 | C# /*Yorumlar (1)*/

Metotlar geriye değer döndürür yada döndürmez. Peki döndürenler kaç değer döndürür denildiğinde tabi ki bir deriz. Birden fazlaya ihtiyaç varsa ne yaparız?
Bunun için 3 metot prototipi yazdım, paylaşıyorum.

class Program
{
    static void Main(string[] args)
    {
        //1. yöntemin kullanımı
        int a, b;
        a = Yontem1(out b);
        // sonuc
        //a -> 20 ve b -> 10 olur.
    }
 
    //1. yöntem -> out kullanımı
    static int Yontem1(out int par)
    {
        par = 10;
        return 20;
    }

 İlk yöntem out parametre anahtarını kullanmak. Geriye dönmediği kesin ama metottan etkilendiğide bir gerçek. İşe yarıyor mu, evet :)

class Program
{
    static void Main(string[] args)
    {
        //2. yöntemin kullanımı
        DonenTip tip = Yontem2();
        //sonuc
        //tip.a -> 20 ve tip.b -> 10 olur.
    }
 
    //2. yöntem -> sınıf(class) kullanmak
    class DonenTip
    {
        public int a, b;
    }
 
    static DonenTip Yontem2()
    {
        DonenTip tip = new DonenTip();
        tip.a = 20;
        tip.b = 10;
        return tip;
    }

İkinci yöntem ise Classnesne (Custom Reference Type) kullanmak. Geriye yine tek bir nesne dönüyor. İçsel olarak genişletilebilmesi (property, field) sayesinde çok kullanışlı lakin yazması zahmetli.

class Program
{
    static void Main(string[] args)
    {
        //3. yöntemin kullanımı
        var sonuc = Yontem3();
        //sonuc.Item1 -> 20 ve sonuc.Item2 -> 10 olur.
    }
 
    //3. yöntem Tuples kullanımı
    static Tuple<int, int> Yontem3()
    {
        return Tuple.Create(20, 10);
    }

Son yöntem aslında yazının amacı ve Framework 4.0 yeniliği olan Tupleçok-ögeli kullanmak...

Örnek proje.

Yorumlar

Ahmet KÜÇÜKOĞLU

Struct tanımlayıp da birden fazla değer döndürebiliriz. Ama son yöntem Tuple yenilikçi bir yaklaşımmış. Elinize sağlık

19 Nisan Salı, 2011

Yorum Yaz

Ad

Email (sahte adresli yorumlar silinir.)

Yorum