Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bildirilen bir öğenin ömrü , kullanılabilir olduğu süredir. Değişkenler, ömrü olan tek öğelerdir. Bu amaçla, derleyici, yordam parametrelerini ve işlev döndürümlerini özel durumlar olarak kabul eder. 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 prosedürdeki bir blok içinde bildirilen değişkenler (örneğin bir For
döngüsü) prosedüre girişte başlatılır. Bu başlatmalar, kodunuzun bloğu yürütmesine bakılmaksızın geçerlilik kazanır.
Ömür Sonu
Bir yordam sonlandırıldığında, yerel değişkenlerinin değerleri korunmaz ve Visual Basic belleklerini geri alır. Yordama bir dahaki sefer çağrı yaptığınızda, tüm yerel değişkenleri yeniden oluşturulur ve tekrar 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.
Prosedür konumu ve paylaşımı | Statik değişken ömrü başlar | Statik değişkenin yaşam süresi biter |
---|---|---|
Modülde (varsayılan olarak paylaşılan) | İşlem ilk kez çağrıldığında | Uygulamanız çalışmayı durdurduğunda |
Bir sınıfta, Shared (yordam bir örnek üyesi değildir) |
Prosedür, ilk kez belirli bir örnekte veya sınıf veya yapı adında çağrıldığında | Uygulamanız çalışmayı durdurduğunda |
Sınıfın örneğinde değil Shared (yordam bir örnek üyesidir) |
Prosedür, belirli bir nesne üzerinde ilk kez çağrıldığında | Ö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
gibi bir değiştirici kullandığında anahtar sözcüğüne Static
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
Yorumlar
Yukarıdaki örnekte, yordam applesSold
çağıran koda döndükten sonra değişken runningTotal
varolmaya devam eder. Bir sonraki çağrıda runningTotal
, applesSold
daha önce hesaplanmış değerini korur.
applesSold
Static
kullanılmadan bildirilmiş olsaydı, önceki birikmiş değerler runningTotal
çağrıları 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.
Static
olarak bir dizi bildirirseniz, sırasını (boyut sayısı), her boyutun uzunluğunu ve tek tek öğelerin değerlerini başlatabilirsiniz.
Güvenlik
Önceki örnekte olduğu gibi, modül düzeyinde applesSold
bildirerek aynı yaşam süresini elde edebilirsiniz. Ancak bir değişkenin kapsamını bu şekilde değiştirdiyseniz, yordamın artık buna tekil erişimi olmaz. Diğer prosedürler applesSold
'a erişerek değerini değiştirebildiği için işleyen toplam güvenilir olmayabilir ve kodun bakımı daha zor olabilir.