免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
Board logo

標題: 變數的生命週期 [打印本頁]

作者: mhfo    時間: 2013-6-6 09:49     標題: 變數的生命週期

生命週期
一個變數在程式中保有他的值的時間就叫做生命週期,一般而言,一個程序或函數執行完時,該函數或程序的所有變數就不存在了,這些變數存在的時間就只有一個函數執行的時間
但如果是全域變數,如利用public 或private 這這修飾子的變數,他們存在的時間就是一整個類別或是應用程式存在的時間,因此當我們要一個變數在一個程序中執行完時還要保留他的值的時候,通常就會使用全域變數
try 看看下面二個程式碼

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim x As Integer
        x = x + 1

        MessageBox.Show(x)

    End Sub

    Private y As Integer
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        y = y + 1
        MessageBox.Show(y)

    End Sub

End Class

我們很清楚可以看到每按一次button2鈕,y的值就會增加1,但按button1鈕,x值每次的值都是1,這就是因為全域變數不因程序結束就消失,所以y的值每當按一次鈕
結束程序操作時就會加1,但有時候我們不想讓讓別的程序也存取到y,二個程序同時修改到y值造成無法預期的結果如下

Public Class Form1



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



        y = y + 1



        MessageBox.Show(y)



    End Sub



    Private y As Integer



    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click



        y = y + 1

        MessageBox.Show(y)



    End Sub

End Class

這樣不管我們按 button1 或是 button2 y值都會加1,我只想把y值當成程序內的變數,但又想保留其值,那應該怎麼做
有一程叫靜態變數的東西 其語法如下
Static 靜態變數 as 型態
可以讓你宣告在程序內的變數也可以保留其值以下為範例

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Static y As Integer

        y = y + 1

        MessageBox.Show(y)

    End Sub
另外,有一程變數被稱之為常數的變數,這種變數不論你如何改變他都沒用,他是一開始宣就一定要設定起始值,以後均不可變變
否則會有錯誤訊息,該變數宣告方式如下
Const x As Integer = 23
那 x  就是一個常數,而且必需要給起始值23,這個值就一直會是23




歡迎光臨 魚骨頭的雲端圖書館 (http://mhfo.hotbbs.info/) Powered by Discuz! 7.0.0