ProgramlamaYazılım Mühendisi (VB Geliştirici)

Visual Basic'te değişkenlerin kapsamı (scope) nasıl çalışır ve programın farklı bölümlerinde değişken erişim sorunlarından nasıl kaçınılır?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

Visual Basic'te değişkenlerin kapsamı, tanımlandıkları yerle belirlenir: prosedür içinde (yerel değişken), sınıf/modül seviyesinde (sınıf veya modül değişkeni) veya global olarak (ayrı bir dosyada).

  • Prosedür içinde Dim - değişken yalnızca bu prosedürde mevcuttur.
  • Sınıf veya modül seviyesinde Dim - sınıf/modül içindeki tüm prosedürlerde erişilebilir.
  • Public, Private, Friend kullanımı - diğer sınıf/modüllerden erişim üzerine kısıtlamalar getirir.

Örnek:

Module Module1 Dim moduleVar As Integer = 5 Sub Main() Dim localVar As Integer = 10 Console.WriteLine(moduleVar) ' Erişilebilir Console.WriteLine(localVar) ' Erişilebilir End Sub Sub OtherSub() Console.WriteLine(moduleVar) ' Erişilebilir Console.WriteLine(localVar) ' Hata! End Sub End Module

Kandırmaca Soru

Static anahtar kelimesi ile prosedür içinde tanımlanan bir değişkenin kapsamı nedir?

Cevap:

Prosedür içinde Static anahtar kelimesiyle tanımlanan bir değişken, yalnızca bu prosedür içinde erişilebilir, ancak değeri prosedür çağrıları arasında korunur.

Örnek:

Sub Counter() Static count As Integer count = count + 1 Console.WriteLine(count) End Sub ' Counter her çağrıldığında count artar

Konu hakkında bilgi eksikliğinden kaynaklanan gerçek hata örnekleri


Hikaye

Bir projede, For döngüsü içinde bir bayrak değişkeni Dim x As Boolean tanımlandı, her yeni yinelemeye girdiğinde "sıfırlanacağını" bekliyordu (bazı diğer diller gibi). Ancak döngüden çıkınca değişken erişilebilir durumda kalınca, prosedür ikinci kez çalıştığında tahmin edilemez bir davranış sergilendi.


Hikaye

Bir programcı, modül içinde genel bir değişken tanımladı ve bu isimde başka bir modül tarafından yanlışlıkla üzerine yazıldı; bu durum programın farklı bölümlerinde kritik hatalara neden oldu. Bu, hata ayıklamayı zorlaştırdı ve kimse nedenini anlayamadı.


Hikaye

Bir öğrenci, bir alt programda toplama işlemi için bir Static değişken tanımladı ve her çağrıldığında "sıfırlanacağını" düşündü. Sonuç olarak, tekrar tekrar çağrıldığında toplam büyüyerek yanlış bir sonuç verdi.