C# 7.2 – In Parameters

Merhaba,

C#’ta metotlara gönderilen parametreler üzerinde farklı işlevsellikler gösteren “ref” ve “out” keywordleri mevcuttur. C# 7.2 versiyonu ile bu keywordlerin yanına “In” komutuda eklenmiştir. Gelin bu yeni gelen komutu önceki var olanlarla mukayese ederek inceleyelim.

ref Komutu

Metoda gönderilecek değişkenin referansını göndermemizi sağlayan komuttur. Bu şekilde değişken kopyalanması engellenmekte ve direkt olarak referansı aracılığıyla ilgili değişkene fiziksel müdahalede bulunulmaktadır.

    class Program
    {
        static void Main(string[] args)
        {
            int refa = 5;
            RefMetod(ref refa);
            Console.WriteLine($"refa : {refa}");
            Console.Read();
        }
        static void RefMetod(ref int a)
        {
            a = 15;
        }
    }

out Komutu

Metot içindeki bir değeri dışarıdaki farklı bir değişkene aktarmak için kullanılmaktadır. Genellikle metotlardan birden fazla değeri geriye döndürmek için kullanılmaktadır.

        static void Main(string[] args)
        {
            OutMetod(out int outa);
            Console.WriteLine($"outa : {outa}");
            Console.Read();
        }
        static void OutMetod(out int a)
        {
            a = 3;
        }

ref ile out keywordleri arasındaki farka gelirsek eğer;
ref, parametreye içerisinde müdahale koşulu koymamakta, bu işlevi ihtiyaca dönük opsiyonel bırakmaktadır.
out, dışarıya değer döndüreceği için parametreye bir değer assign/atama işlemini şart koşmaktadır.

In Komutu

C# 7.2 versiyonuyla gelen In komutu sayesinde parametreye verilen değeri sabit tutabilmekteyiz. Yani parametre readonly özellik göstermektedir.

    class Program
    {
        static void Main(string[] args)
        {
            int ina = 5;
            InMetod(ina);
            Console.Read();
        }
        static void InMetod(in int a)
        {
            Console.WriteLine(a);
        }
    }

Burada görmüş olduğunuz “a” parametresinin değeri “in” keywordü sayesinde readonly hale getirilmiştir. Metot içerisinde “a” parametresine herhangi bir değer atama söz konusu olursa derleme hatasıyla bu işlem engellenecektir.

Metot kullanılırken ilgili parametrenin başına “in” komutu verilebilir.

    class Program
    {
        static void Main(string[] args)
        {
            int ina = 5;
            InMetod(in ina);
            Console.Read();
        }
        static void InMetod(in int a)
        {
            Console.WriteLine(a);
        }
    }

Bu şekilde işlevsellikte bir değişiklik söz konusu olmayacaktır. Bu kullanım varyasyonlarında ki tek fayda kodunuzu okuyan 2. ve 3. şahısların bu metoda gönderilen parametrenin değerinin değiştirilmeyeceğini bilmesi açısından bilgilendirici olmasıdır.

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. 26 Nisan 2018

    […] başka durum ise, metot içerisinde parametrelerin değerini sabitlemek istiyorsak eğer In parametreisini kullanmamız yeterli […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Copy Protected by Chetan's WP-Copyprotect.