VB.NET生存期開(kāi)始與結(jié)束
VB.NET編程語(yǔ)言是由微軟公司推出的一款適用于很多領(lǐng)域的開(kāi)發(fā)語(yǔ)言。那么,我們應(yīng)當(dāng)如何正確的理解這門(mén)語(yǔ)言,并熟練的運(yùn)用它給我們帶來(lái)幫助呢?首先就讓我們從VB.NET生存期開(kāi)始學(xué)習(xí)吧。#t#
已聲明元素的“生存期”是元素可供使用的時(shí)間周期。變量是***具有生存期的元素。因此,編譯器將過(guò)程參數(shù)和函數(shù)返回值視為變量的特殊情況。變量的生存期表示它可以存儲(chǔ)值的時(shí)間周期。在生存期內(nèi)變量的值可以更改,但變量總是存儲(chǔ)某些值。
不同的VB.NET生存期
“成員變量”(在模塊級(jí)并且在任何過(guò)程外部聲明)的生存期一般與聲明該變量的元素的生存期相同。在類(lèi)或結(jié)構(gòu)中聲明的非共享變量作為聲明該變量的類(lèi)或結(jié)構(gòu)的每個(gè)實(shí)例的單獨(dú)副本存在。每個(gè)這樣的變量的生存期都與它的實(shí)例的生存期相同。但是,Shared 變量?jī)H有一個(gè)生存期,即應(yīng)用程序運(yùn)行所持續(xù)的全部時(shí)間。
“局部變量”(在過(guò)程內(nèi)部聲明)僅在聲明變量的過(guò)程的運(yùn)行階段存在。這同樣適用于過(guò)程的參數(shù)和任何函數(shù)返回值。但是,如果該過(guò)程調(diào)用其他過(guò)程,則局部變量在被調(diào)用過(guò)程運(yùn)行期間保留它們的值。
VB.NET生存期的開(kāi)始
當(dāng)控制進(jìn)入聲明局部變量的過(guò)程時(shí),局部變量的生存期便開(kāi)始了。過(guò)程一開(kāi)始運(yùn)行,每個(gè)局部變量即被初始化為其數(shù)據(jù)類(lèi)型的默認(rèn)值。當(dāng)過(guò)程遇到指定初始值的 Dim 語(yǔ)句 (Visual Basic) 時(shí),它將那些變量設(shè)置為那些值,即使代碼已經(jīng)給它們賦了其他值。
結(jié)構(gòu)變量的每個(gè)成員被視為單獨(dú)的變量初始化。同樣,數(shù)組變量的每個(gè)元素也單獨(dú)初始化。
在過(guò)程內(nèi)部的塊中聲明的變量(例如 For 循環(huán))在進(jìn)入過(guò)程時(shí)被初始化。不管代碼是否執(zhí)行該塊,這些初始化都會(huì)生效。
VB.NET生存期的結(jié)束
當(dāng)過(guò)程終止時(shí),不保留其局部變量的值,Visual Basic 將回收它們占用的內(nèi)存。下次調(diào)用該過(guò)程時(shí),將再度創(chuàng)建并重新初始化它的所有局部變量。
當(dāng)類(lèi)或結(jié)構(gòu)的實(shí)例終止時(shí),它的非共享變量便失去它們的內(nèi)存和值。類(lèi)或結(jié)構(gòu)的每個(gè)新實(shí)例創(chuàng)建并初始化它的非共享變量。但是,Shared 變量一直保留到應(yīng)用程序停止運(yùn)行時(shí)。
VB.NET生存期的擴(kuò)展
如果用 Static (Visual Basic) 關(guān)鍵字聲明局部變量,該變量的生存期要比其過(guò)程的執(zhí)行時(shí)間長(zhǎng)。下表顯示了過(guò)程聲明如何確定 Static 變量存在的時(shí)間長(zhǎng)度。