ref parametreler
ref ile referansla geçme ve değişikliğin çağırana yansımasını öğrenirsin.
ref parametreler
ref anahtar kelimesi bir değişkeni referansla geçirir. Metot içinde yapılan değişiklik çağırana yansır. Normal geçişte değer kopyalanır; ref geçişinde ise değişkenin kendisi paylaşılır.
Tanımda ve çağrıda ref yazılır: static void Double(ref int n) ve Double(ref x). ref ile geçirilen değişken çağrıdan önce mutlaka başlatılmalıdır.
ref kullanımı
ref hem tanımda hem çağrıda yazılmalıdır. Yalnızca bir yerde yazarsan derleme hatası alırsın. Değişken çağrıdan önce başlatılmış olmalıdır; aksi halde ref kullanılamaz.
ref özellikle değer türlerinde (int, double, struct) işe yarar; çünkü bu türler normalde değer kopyasıyla geçer. Birden çok değer döndürmek veya bir değeri metot içinde değiştirmek için kullanılır.
Uygulama Triple metodu
static void Triple(ref int n) metodu tanımla; gövdede n = n * 3; yaz. Main içinde int x = 7; Triple(ref x); çağır ve x'i Console.WriteLine ile yazdır.
Örnek çözümü göster
Triple gövdesine n = n * 3; ekle, Main içine int x = 7; Triple(ref x); Console.WriteLine(x); yaz.
Örnek çözüm:
using System;
class Program
{
static void Triple(ref int n)
{
// n'i üç katına çıkar
n = n * 3;
}
static void Main()
{
// x'i tanımla, Triple ile değiştir ve yazdır
int x = 7;
Triple(ref x);
Console.WriteLine(x);
}
}
Kendini test et
-
Double(ref x) sonrası Console ne yazar?
static void Double(ref int n) { n = n * 2; } int x = 5; Double(ref x); Console.WriteLine(x);- 5
- 0
- 10
- 20
Cevabı göster
10 — Doğru. ref ile x'in kendisi değiştirildi; x = 10 olur.
-
İfadeyi anlamına eşle
- ref int n
- Referansla geçir
- Double(ref x)
- Çağrıda ref
- int x = 5;
- Önce başlat
- n = n * 2;
- Değişiklik yansır
-
ref çağrısı
int x = 4; Double(____); Console.WriteLine(x);Cevabı göster
int x = 4; Double(ref x); Console.WriteLine(x);