Konu Tarihi
Visual Basic'te yerel değişkenler, bir yöntem, prosedür, döngü veya iç içe blok içinde tanımlanan değişkenlerdir. Görünürlük alanı (scope) mekanizması, VB6'dan VB.NET'e gelişmiştir, shadowing kuralları ve iç içe bloklarda kısıtlamalar eklenmiştir.
Sorun
Yaygın bir hata, dış ve iç blokta aynı ada sahip değişkenler tanımlamaktır, bu da shadowing ve beklenmedik sonuçlara yol açar. Bu tür değişkenlerin yanlış başlatılması hatalara ve kodun anlaşılırlığını azaltmasına neden olabilir.
Çözüm
Değişkenleri en az gerekli görünürlük alanında tanımlayın. Shadowing'den kaçının, iç içe bloklarda benzersiz adlar kullanın. Aynı ada sahip alanlar (örneğin, "i" iki döngüde) için farklı adlar kullanın veya döngüleri kesiştirmeyin.
Kod örneği:
Sub Demo() Dim value As Integer = 10 If value > 5 Then Dim message As String = "Beşten büyük" Console.WriteLine(message) End If ' message burada erişilemez, hata verecek End Sub
Anahtar özellikler:
Dışarıda aynı adı taşıyan bir değişkeni döngü içinde tanımlarsak ne olur?
İç içe değişken dıştaki değişkeni maskelemektedir (shadows). Blok sona erdikten sonra dıştaki örnek tekrar geçerli hale gelir.
Dim x As Integer = 1 For i = 1 To 2 Dim x As Integer = i * 10 ' dış x'i maskeleyen Console.WriteLine(x) ' 10, sonra 20 Next Console.WriteLine(x) ' 1
Bir sınıfta iç içe prosedürler (Sub/Function) söz konusu olduğunda görünürlük alanı nasıl çalışır?
İç içe prosedürün kendi görünürlük alanı vardır, dışarıdaki değişkenleri yalnızca parametre olarak aktarılanlar hariç göremez.
Farklı prosedürlerde aynı değişken adlarını kullanmak mümkündür mü?
Evet, bu standart bir uygulamadır. Bir yöntemin yerel değişkeni, başka birini etkilemez, aynı isimde bile olsa.
İki iç içe blok içinde aynı ada sahip bir değişken tanımlanması, kafa karışıklığına ve hesaplama sonuçlarının yanlış olmasına neden oldu.
Artılar:
Eksiler:
İç bloklarda benzersiz adların kullanılması, her değişkenin açıkça yorumlanan görünürlük alanı, adların örtüşmemesi.
Artılar:
Eksiler: