Aracılığıyla paylaş


Visual Basic'te yaşam süresi

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.

Ayrıca bakınız