C# Referans ve Output, Metoda parametre kullanımı için bir değişken kullanıldığında, metod içerisinde bu değişken üzerinde yapılacak değişikliğin yansıyabilmesi veya dönüş tipi olmamasına rağmen metoddan geriye değer döndürmek için kullanılabilecek yöntemlerdir.
C# Referans ve Output Nedir? Nasıl Kullanılır?
Referans yolu ile parametre aktarmak
Metod çağrıldığında parametre olarak geçirilen bir değişkenin değerinin kendisi kullanılır. Değer yolundaki gibi bellekte yeni bir alan oluşturulmaz. Başka bir deyişle metoda, ilgili parametrenin bellekteki referansı aktarılmaktadır. Bir önceki örneki referans yolu ile parametre geçirmeyi temsil etmek için kullanılabilir. Bir parametreyi metoda referans yolu ile geçirmek için hem metodun yazılışında hemde çağrılışında parametrenin ve önüne ref anahtar kelimesi koyulur.
Örnek
1 2 3 4 5 6 7 8 9 10 11 | static void BirEkle(ref int x) { x++; //x'in değerini 1 arttırır. } public static void Main(string[] args) { int k=6; BirEkle(ref k); Console.WriteLine(k); Console.ReadLine(); } |
Çıktı
Referans Yolu ile Parametre Aktarmak
Ekran Çıktısı Açıklaması
Output yolu ile parametre aktarmak
Metoda parametreyi output yoluyla geçirmek, kavramsal olarak referans yolu ile parametre geçirmeye benzer. ref anahtar kelimesi yerine hem method yazılışında, hem de metot çağrımında ilgili parametrelerin başına out anahtar kelimesi getirilir. out parametresinin tek farkı metoda parametre olarak geçirilen değişkenin başlangıç değerinin verilmesine gerek olmamasıdır. ref anahtar kelimesi kullanıldığında ilgili değişken metoda aktarılmadan önce mutlaka ilk değeri almalıdır.
Örnek
1 2 3 4 5 6 7 8 9 10 11 12 | static void KaresiniVer(int a,out int sonuc) { sonuc=a*a; } public static void Main(string[] args} { int kok=5; int karesi; KaresiniVer(kok, out karesi); Console.WriteLine("5 in karesi : {0}",karesi); Console.ReadLine(); } |
Çıktı
Referans Yolu ile Parametre Aktarmak
Ekran Çıktısı Açıklaması
Bu örnekte, KaresiniVer() metodu iki tane parametre kabul eder bu parametrelerden ilki karesi alınacak değerdir. diğeri ise hesaplanan karenin değerini dışarıya(metodu çağırana) göndermek için kullanılacak olan out parametresidir.
Kod bloğunda sonuc isimli out parametresine a parametresinin karesi hesaplanıp atanır. Dikkat edilirse metod geriye hiçbir değer döndürmez gibi görünür. Fakat, aslında out parametresi sayesinde içeride hesaplanan bu parametrenin değeri dışarıya çıkarılır.
Bu bilgiler ışığında şunları söyleyebiliriz. Main metodu içerisinde KaresiniVer() metodu çağrılır. 5 değeri verilen kök değişkeni ile başlangıç değeri verilmeyen ve out olarak işaretlenmiş sonuc değişkeni, bu metoda parametre olarak geçirilir.
Burada gözlemlenmesi gereken, metoda parametre olarak geçirilen out parametresinin bellekte yeri ayrı olmasına rağmen henüz değerlerinin olmamasıdır. Metod içerisinde bellek alanına 5 değerinin karesi 25 atanır ve bu değerin metot dışında da erişilebilir olduğu ekrana yazılıp görülür.
Referans(ref) ve Output(out) yoluyla metodlara değer aktarma sayesinde, bir metottan geriye birden fazla değer döndürülebilir.
📚Benzer Makaleler
✍ Lütfen olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.
🔗 Sosyal medya kanallarından makaleyi paylaşarak destek olursanız çok sevinirim.
👋 Bir sonraki makalede görüşmek dileğiyle.
Merhaba ilk örnek de int yerine bool bir değer düşünürsek yine aynı mantıkla çalışır mı? Yoksa bool farklı tepki mi verir?
Aynı mantıkla çalışır.