Visual Basic'de Ömür
Bildirilen bir öğenin ömrü , kullanılabilir olduğu süredir. Değişkenler, ömrü olan tek öğelerdir. Bu amaçla, derleyici yordam parametrelerini ele alır ve işlev değişkenlerin özel durumları olarak döndürür. Değişkenin ömrü, bir değeri tutabileceği süreyi temsil eder. Değeri yaşam süresi boyunca değişebilir, ancak her zaman bir değer tutar.
Farklı Yaşam Süreleri
Bir üye değişkeni (modül düzeyinde, herhangi bir yordamın dışında bildirilir) genellikle bildirildiği öğeyle aynı yaşam süresine sahiptir. Bir sınıfta veya yapıda bildirilen paylaşılmayan bir değişken, bildirildiği sınıfın veya yapının her örneği için ayrı bir kopya olarak bulunur. Bu tür değişkenlerin her birinin ömrü örneğiyle aynı olur. Ancak, bir Shared
değişkenin yalnızca tek bir ömrü vardır ve bu süre uygulamanızın çalıştığı süre boyunca sürer.
Yerel değişken (bir yordam içinde bildirilir) yalnızca bildirildiği yordam çalışırken bulunur. Bu, bu yordamın parametreleri ve tüm işlev dönüşleri için de geçerlidir. Ancak, bu yordam diğer yordamları çağırırsa, çağrılan yordamlar çalışırken yerel değişkenler değerlerini korur.
Ömrün Başlangıcı
Yerel değişkenin ömrü, denetim bildirildiği yordama girdiğinde başlar. Her yerel değişken, yordam çalışmaya başlar başlamaz veri türü için varsayılan değere başlatılır. Yordam, ilk değerleri belirten bir Dim
deyimle karşılaştığında, kodunuz bunlara başka değerler atamış olsa bile bu değişkenleri bu değerlere ayarlar.
Bir yapı değişkeninin her üyesi ayrı bir değişkenmiş gibi başlatılır. Benzer şekilde, bir dizi değişkeninin her öğesi ayrı ayrı başlatılır.
Bir yordamın içindeki bir blok içinde bildirilen değişkenler (döngü gibi For
) yordama girişte başlatılır. Bu başlatmalar, kodunuzun bloğu yürütmesine bakılmaksızın geçerlilik kazanır.
Kullanım Ömrü Sonu
Bir yordam sonlandırıldığında, yerel değişkenlerinin değerleri korunmaz ve Visual Basic belleklerini geri alır. Yordamı bir sonraki çağırışınızda, tüm yerel değişkenleri yeniden oluşturulur ve yeniden başlatılır.
Bir sınıfın veya yapının örneği sonlandırıldığında, paylaşılmayan değişkenleri belleklerini ve değerlerini kaybeder. Sınıfın veya yapının her yeni örneği, paylaşılmayan değişkenlerini oluşturur ve yeniden başlatır. Ancak, Shared
uygulamanız çalışmayı durdurana kadar değişkenler korunur.
Yaşam Süresinin Uzatılması
Anahtar sözcüğüyle Static
bir yerel değişken bildirirseniz, yaşam süresi yordamının yürütme süresinden daha uzun olur. Aşağıdaki tabloda, yordam bildiriminin bir Static
değişkenin ne kadar süreyle var olduğunu nasıl belirlediğini gösterir.
Yordam konumu ve paylaşımı | Statik değişken ömrü başlar | Statik değişken yaşam süresi sonu |
---|---|---|
Modülde (varsayılan olarak paylaşılan) | Yordam ilk kez çağrılır | Uygulamanız çalışmayı durdurduğunda |
Bir sınıfta ( Shared yordam örnek üyesi değildir) |
Yordam ilk kez belirli bir örnekte veya sınıf veya yapı adının kendisinde çağrılır | Uygulamanız çalışmayı durdurduğunda |
Sınıfın örneğinde değil Shared (yordam bir örnek üyesidir) |
Yordam belirli bir örnekte ilk kez çağrılır | Örnek çöp toplama için serbest bırakıldığında (GC) |
Aynı Ada Ait Statik Değişkenler
Birden fazla yordamda aynı ada sahip statik değişkenler bildirebilirsiniz. Bunu yaparsanız, Visual Basic derleyicisi bu tür değişkenleri ayrı bir öğe olarak değerlendirir. Bu değişkenlerden birinin başlatılması diğerlerinin değerlerini etkilemez. Aynı durum, bir dizi aşırı yükleme içeren bir yordam tanımlar ve her aşırı yüklemede aynı ada sahip bir statik değişken bildirirseniz de geçerlidir.
Statik Değişkenler için Öğeleri İçeren
Statik bir yerel değişkeni bir sınıfın içinde, yani bu sınıftaki bir yordamın içinde bildirebilirsiniz. Ancak, yapı içindeki statik bir yerel değişkeni yapı üyesi olarak veya bu yapı içindeki bir yordamın yerel değişkeni olarak bildiremezsiniz.
Örnek
Açıklama
Aşağıdaki örnekte Static anahtar sözcüğü ile bir değişken bildirmektedir. (Dim Deyimi gibi bir değiştirici Static
kullandığında anahtar sözcüğüne Dim
ihtiyacınız olmadığını unutmayın.)
Kod
Function runningTotal(ByVal num As Integer) As Integer
Static applesSold As Integer
applesSold = applesSold + num
Return applesSold
End Function
Açıklamalar
Yukarıdaki örnekte, yordam runningTotal
çağıran koda döndükten sonra değişken applesSold
varolmaya devam eder. Bir sonraki çağrıda runningTotal
, applesSold
daha önce hesaplanmış değerini korur.
kullanılmadan Static
bildirilmiş olsaydıapplesSold
, önceki birikmiş değerler çağrısı runningTotal
arasında korunmazdı. Bir sonraki çağrıda runningTotal
yeniden applesSold
oluşturulur ve 0 olarak başlatılırdı ve runningTotal
çağrılan değerin aynısını döndürürdü.
Kodu derleme
Statik yerel değişkenin değerini bildiriminin bir parçası olarak başlatabilirsiniz. Bir diziyi olarak Static
bildirirseniz, derecesini (boyut sayısı), her boyutun uzunluğunu ve tek tek öğelerin değerlerini başlatabilirsiniz.
Güvenlik
Yukarıdaki örnekte, modül düzeyinde bildirimde bulunabilir ve applesSold
aynı yaşam süresine sahip olabilirsiniz. Ancak bir değişkenin kapsamını bu şekilde değiştirdiyseniz, yordamın artık buna özel erişimi olmaz. Diğer yordamlar değerine erişip applesSold
değerini değiştirebildiğinden, çalışan toplam güvenilir olmayabilir ve kodun korunması daha zor olabilir.