11 Aralık 2009 Cuma

neden out neden ref

C# 'ta 2 anahtar kelime olan out ve ref 'ten bahsedeceğim. Bu 2 anahtar kelime değer türlerini ve veri türü referans yollarını fonksiyonlarımıza taşımamıza yarıyor.

Neden Ref?
Değer türü derken int, bool gb. kavramlardan bahsettiğimi anlamışsınızdır. Bu veri türleri kullanılırken bu değişkenlerin yeni bir kopyası oluşturulur ve bu kopyalar üzerinden işlem gerçekleştirilir. Yani fonksiyonlarda kopya değişkenlerimizi kullanıyoruz. Ancak bazı durumlarda kopya kullanmak yerine değer türünü direk kullanmak isteriz. Bunu C# bu anahtar kelimelerle gerçekleştiriyoruz.
Gelelim bu 2 anahtar kelimeyi nasıl kullanıyoruz.

Şimdi recover bir fonksiyon tanımladık bu geri dönüş değeri olmayan fonksiyon. Bu fonksiyonda 2 int türünde değişkenler oluşturduk. Değişkenlerimize değer atadık. Değişenkenlerimizi ref ifadesiyle DoSomething fonksiyonuna gönderdik. Bu işlemi gerçekleştirerek Değişkenimizin Kopyasını değil kendisini direk olarak DoSomething fonksiyonuna gönderdik. Amacımız örnek oldugu için bu değişkenlerimizin değerlerini birbiriyle değiştirdim ve aldıkları değeri geri gönderip, recover fonksiyonunda yazdırdık. Dikkat etmemiz gereken önemli bir nokta ise ref kullanacağımız değişkene atanmış değer olması gerekir. Yoksa aynen "Use of unassigned local variable" hata mesajını alırız. Eğer recover fonksiyonunda (ref x, ref y) yerine (x, y) yazmış olursak Argument '1': cannot convert from 'int' to 'ref int', hatasını alırdık.
Neden Out?
Aslında out'un mantığı ile ref ' in mantığı tamamen aynıdır. Tek fark ve en önemlisi bu out ifadesinde değişkenimize değer atamamıza gerek yoktur.


Bu örnekte değer atanmamış değişkenimize out ifadesiyle değişken atadık. Basit olsun anlaşılır olsun. :)

Hiç yorum yok:

Yorum Gönder