3.1 常量html
3.1.1 什麼是常量編程
在編程中,經常能夠遇到變量和常量。顧名思義,變量就是值能夠改變的量,常量是其值不可改變的量。數組
不能夠改變的量有什麼用呢?事實上,在實際編程中,常量用得不多。甚至能夠用變量代替常量,固然這樣作的代價是下降了程序的性能。編程語言
事實上,常量有不少用處。例如圓周率,若是每次須要用到的時候都把它輸入一遍,效率(這裏指編程效率而非執行效率)是很低的。若是把圓周率定義爲一個常量,那麼每次須要用到的時候,只要輸入常量名就能夠了。函數
3.1.2 關鍵字Const性能
這裏首先講解下什麼是關鍵字。在任何一種編程語言中,都定義着那麼一些關鍵字,這些關鍵字有特殊的含義,例如Function就是VB.net中的一個關鍵字(VB.net中不區分大小寫),其功能就是定義一個函數。你不能將關鍵字用於你的常量、變量或者是函數的名字。其中用於定義常量的關鍵字是Const,Const的用法是:學習
Const 常量名 As 常量類型=常量值測試
值得一提的是,As也是關鍵字,它一般用於常量和變量的定義以後,用來指明所定義的類型。不過它不是必須的,省略As的狀況將在後面討論。url
後面的常量值是必須的,一個常量的值必須在定義時指定,而變量的值就能夠之後再指定。與此同時,指定了常量值以後,就不能再修改了。spa
常量名不是亂取的,首先它不能是關鍵字(例如不能是Function,也不能是function)。而後,它能夠由阿拉伯數字、大小寫字母、下劃線組成,可是不能夠以數字開頭。
例如這個常量名是合法的:
Str123_
而這個是不合法的:
0Str123_
常量名還能夠如下劃線開頭:
_Str123
上面講的是常量名命名規則,是硬性規定,除此以外,還有一些約定俗成的規則。例如常量名通常都用大寫等等,這些不是必須的,可是能夠提升你代碼的可讀性。這裏不做詳細介紹,由於相關的命名規則太多。
常量名的命名規則就講述到這裏,如今要講講常量類型了。
常量類型其實和變量類型是同樣的,常量類型有不少,你還能夠本身定義一個類型。可是咱們必須先了解經常使用常量類型。
3.1.3 經常使用常量類型
經常使用的常量類型有字符串、整數和浮點數,下面來一一介紹:
String:字符串,長度沒有限制。
Integer:整數,其取值範圍爲-2147483648~2147483647。
Long:長整數,取值範圍比Integer廣,爲-9223372036854775808~9223372036854775807。
Double:浮點數,其取值範圍爲-1.79769313486232E+308~1.79769313486232E+308,能精確到小數點後15位。
以上是經常使用的幾個數據類型,請讀者務必牢記。至於字符串String,咱們在上一章的學習中就已經接觸過,知道String的值要用雙引號括起來。
3.1.4 常量的定義
瞭解了幾個經常使用的數據類型以後,咱們來學習常量的定義。常量的定義要用到上面講過的Const關鍵字,至於定義的格式也已經介紹過了:
Const 常量名 As 常量類型=常量值
接下來咱們就定義一個字符串常量,取名爲HW,內容爲「Hello World」。根據前面的知識,它的數據類型應該是String,然後面的常量值應該用英文雙引號括起來。因此完整的定義應該是:
Const HW As String = "Hello World"
又或者,定義一個整數常量,表示一MB中的字節數:
Const MB As Integer = 1048576
再來,定義一個浮點數常量,表示圓周率的前10位:
Const PI As Double = 3.1415926535
舉了3個例子,相信讀者已經掌握了常量定義的規律了。
3.1.5 常量的使用
定義了一個常量以後,當時是使用了。使用一個常量很簡單,只須要直接輸入這個常量的名稱就能夠了。例如:
Const HW As String = "Hello World"
MsgBox(HW)
上面的這兩行代碼中,第一行定義了一個常量HW,第二行調用庫函數MsgBox輸出了HW包含的內容。上面這兩句代碼等效於下面這一句:
MsgBox("Hello World")
可見,常量的使用就是簡單的輸入常量的名字。經過上述例子,相信讀者已經掌握了常量的使用方法,那麼常量的定義及使用的介紹就到這裏。接下來讓咱們開始學習變量。
3.2 變量
3.2.1 什麼是變量
上面已經說過,變量就是其值能夠改變的量。程序中用得最多的就是變量,它能夠用來記錄程序目前的執行情況,裝載用戶輸入的數據等等。總之變量的用途不少,這裏不一一介紹,等到實際編程中,讀者天然能體會到。
3.2.2 關鍵字Dim
上一節中,咱們介紹了定義常量的關鍵字Const,那麼定義變量天然也有它的關鍵字,就是Dim了(事實上,定義變量還有不少方法,Dim只是用來定義局部變量,全局變量將在後面討論)。Dim的用法是:
Dim 變量名 As 變量類型
Dim的用法和Const的用法幾乎是同樣的,不一樣點在於,Dim定義的變量能夠不賦初始值。這就分兩種狀況了,一種是有初始值的:
Dim 變量名 As 變量類型=變量初始值
另外一種是沒有初始值的,因爲變量能夠在任什麼時候候賦值,因此沒有初始值是容許的。這種狀況就是:
Dim 變量名 As 變量類型
變量名=變量值
上面的第二句是變量賦值。
3.2.3 布爾類型
以前介紹常量數據類型的時候,只說了整數(和長整數)、字符串和浮點數。這裏引入一個新的經常使用類型布爾。布爾,即Boolean,在一些語言中將其縮寫爲bool,甚至沒有布爾類型。其實布爾類型很簡單,就兩個取值:True和False,True表示真,False表示假。通常用來設置窗體及空間的可見性、可用性等,還能夠用來做爲函數的返回值表示執行的結果(通常用True表示成功,False表示失敗)。其實布爾值也就是一個整數,True爲1,False爲0。在一些語言中,甚至直接用整數變量代替布爾。
3.2.4 變量的定義
上面已經講到,定義變量要用關鍵字Dim。經過上面常量定義的學習,相信讀者能看懂下面三句代碼:
Dim MyName As String
Dim MyAge As Integer
Dim Succeed As Boolean
上面三行分別定義了一個字符串變量MyName、一個整數變量MyAge和一個布爾變量Succeed。
上面咱們說過,在使用Dim定義局部變量的時候,有兩種作法。能夠只定義而不賦值,或者在定義的同時賦值,例如:
Dim Succeed As Boolean = True
這是在定義的同時賦值,還有另外一種,不賦初值。
爲何要單獨拿出來講呢?由於在不賦初值的時候,能夠同時定義多個變量。例如:
Dim Str1, Str2 As String
這樣寫等效於:
Dim Str1 As String
Dim Str2 As String
也就是說,在不賦初值的時候,若是有多個相同類型的變量須要定義,則能夠在同一行中定義。定義時,多個變量名之間用逗號隔開便可。常量不能夠用這樣的方法定義,由於常量必須賦初值。
可見變量的定義和常量的定義是差很少的,不一樣點在於在不賦初值的時候能夠同時定義多個一樣類型的變量,相信讀者能理解,這裏就很少做介紹了。
3.2.5 變量的使用
變量的使用跟常量的使用同樣,都是直接輸入變量名。例如:
Dim MyName As String
MyName = "X.TK"
MsgBox(MyName)
上面的第一句是變量的定義,第二句是變量的賦值,第三句把MyName用做MsgBox的參數。其中第二第三句都是變量的使用,可見和常量使用沒有太大區別。不過常量定義後不能賦值而變量能夠,接下來詳細講述變量的賦值。
3.2.6 變量的賦值
變量的賦值很簡單,就是用一個等號鏈接變量跟表達式。這裏的等號並非相等的意思,而是把右邊的值賦予左邊的意思。
變量賦值的格式:
變量名=表達式
以前的介紹中,筆者寫的是「變量名=變量值」。事實上,在變量的賦值上,右側能夠是一個表達式。表達式是由運算符和操做數組成的,至關於一個算式。在下一節中,筆者將詳細講述運算符和表達式。
3.3 運算符和表達式
3.3.1 運算符
VB.net中的運算符有五個,它們是加、減、乘、除、冪,符號分別是+、-、*、/、^。
用法就很簡單了,至少前三個是沒問題的。除法的寫法是被除數在前,除數在後,冪的寫法是底數在前,指數在後,也都很簡單。至於運算順序,是按照數學上的,也就是冪的優先級最高,而後是乘除,而後是加減。固然你能夠加上圓括號來改變運算順序,圓括號能夠無限嵌套。
另外須要補充一點,就是字符串之間也能夠用加號鏈接。注意是字符串之間,若是把字符串和整數等其餘類型用加號鏈接,執行時會發生錯誤。
字符串用加號鏈接,至關於把它們鏈接起來,例如:
Dim Str As String
Str = "Hello" + "World"
代碼執行後,Str的值爲「HelloWorld」。
3.3.2 表達式
表達式其實就是算式,不過它的操做對象並不止數字這麼簡單,還包括任意一個變量或常量。
下面是一個合法的表達式:
((3 + 4) * 5 - 8 / 3) ^ 5
相信你們均可以看懂,就很少說廢話了。而後是含變量的表達式,其實變量跟數都是同樣的寫法,例以下面的代碼也是合法的:
Dim xInt As Integer
xInt = 1 + 2 + 3 + 4 + 5
xInt = 1 + 2 + 3 + 4 + 5 + xInt
上面的代碼中,第一行第一了一個名爲xInt的整數變量。第二行代碼給xInt賦值,右側的表達式運算結果爲15,xInt的值爲15。第三行代碼中,xInt也做爲表達式的一部分,第三行代碼執行時,先計算右邊的表達式,表達式的值爲30,再賦予左邊的變量xInt。所以三句代碼執行完畢以後,xInt的值爲30。
3.4 過程
3.4.1 什麼是過程
在上一章中,咱們省略了對過程的詳細講述,如今是時候來學習過程了。
過程是一段沒有返回值的代碼,也稱方法,用於實現某些特定功能,能夠理解爲子程序,它能夠包含參數列表。由過程名、參數列表和代碼段組成。
3.4.2 關鍵字Sub
在上一章的最後一個實例中,咱們在雙擊Form1以後,看到了這樣的代碼:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
當時筆者只是說,程序會在展現窗子以前執行中間的代碼。可是實際上,這是一個用來處理窗體Load事件的過程。對於事件,如今還不須要了解,等到後面的章節會詳細介紹。以前說過,Function是函數,Sub是過程。事實上,Sub也是一個關鍵字,它用於定義一個過程。上面的代碼中還有一個關鍵字Private,Private的中文意思是「私有的」,它表示這個過程只能在Form1內部訪問。這涉及到過程的可見性級別,會在之後介紹,這裏能夠省略Private關鍵字。
Sub的用法是:
Sub 過程名(參數1,參數2……)
代碼段
End Sub
上面的格式用於定義一個過程,最後一句代碼中的End也是一個關鍵字。它的用法不少,其中一種就是在一個空格以後接另外一個關鍵字,標記某段代碼的結束。上面的End Sub就是這種用法,Sub和End Sub組成一對,中間的就是實現功能的過程代碼。
3.4.3 過程的定義
上面講到,過程的定義須要用Sub關鍵字。過程的參數列表不是必須的,可是後面的圓括號是必須的。
所以,一個最簡單的函數定義以下:
Sub MyFirstSub()
End Sub
這個函數是空的,可是同樣能夠調用,只不過調用沒有任何的效果罷了(事實上,計算機內部仍是會進行入棧出棧等一系列操做)。
接下來咱們給它加上一行代碼,用來輸出一串字符。整個過程的定義就變成了:
Sub MyFirstSub()
MsgBox("This is my first sub.")
End Sub
這樣,在調用這個過程的時候,就會彈出一個消息框了。
可是這樣的過程仍是不夠靈活,每次調用出來的消息框都是同樣的,要想改變內容,就要改變過程的定義。用什麼方法解決呢?固然是參數了,參數就寫在過程名後面的圓括號裏。
3.4.4 參數列表
其實咱們以前已經接觸過參數列表了,就是在庫函數MsgBox中,第一個參數就是消息框中間顯示的字符串,如今咱們來學習本身定義參數列表。
再次看這段代碼:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
咱們說過,圓括號裏面的就是參數列表:
ByVal sender As System.Object, ByVal e As System.EventArgs
中間有一個逗號,顯然這是兩個參數,咱們來看第一個參數:
ByVal sender As System.Object
首先是第一個關鍵字ByVal,它表示參數是按值傳送的,在過程或函數中對它進行的修改並不會在過程或函數結束後產生影響。換句話說,參數前面有ByVal關鍵字的話,當這個參數是用變量進行傳送時,參數在過程或函數裏面能夠修改,可是並不影響這個變量自己的值。除了ByVal外,還有ByRef,將在下一小節詳細介紹它們的區別。
上面的sender很明顯就是參數名了。而後是咱們早就遇到過的As關鍵字,咱們知道,它一般用於指定前面的操做對象的數據類型。這裏的意思是,傳來的參數sender的數據類型必須是System.Object,這個類型咱們還沒接觸過,先無論。
通常來講,定義一個參數的格式:
ByVal 參數名 As 數據類型
函數或過程的執行中,能夠將參數看成變量來用,用法是直接輸入參數名。
讓咱們來寫一個用來彈出消息框的過程,首先須要一個參數,表示要輸出的內容:
ByVal msg As String
整個過程的定義就是:
Sub MyFirstSub(ByVal msg As String)
MsgBox(msg)
End Sub
可見在過程當中使用參數的方法就是直接輸入參數名。雖然上面這個過程並無什麼意義,由於咱們徹底能夠直接調用MsgBox函數。不過當代碼多起來的時候,過程就顯得至關重要了。
3.4.5 參數的傳遞方式
上面說過,參數有兩種傳遞方式,一種是ByVal,一種是ByRef。前一種ByVal指參數按值傳遞,後一種ByRef指參數按地址傳遞。若是傳入的參數是簡單的一個值,那麼二者並無區別。可是若是傳入的是一個變量的話,後一種方式ByRef將會保存在函數或過程當中對其做出的全部更改。
也就是說,ByRef是把整個變量傳遞過去,而ByVal只是把變量的值提取出來,再進行傳遞。
關於這二者的區別,將在章末的實例中用實驗加以驗證。
3.4.6 過程的調用
例如,一個過程定義以下:
Sub MyFirstSub(ByRef msg As String)
MsgBox(msg)
End Sub
對於它的調用,咱們以前已經說過,直接輸入過程名,而後帶一對圓括號,若是有參數,就在圓括號裏輸入要傳遞的參數。
因此,調用上面的過程應該是這樣:
MyFirstSub("This is my first sub.")
這是傳遞了一個值。又或者,能夠傳遞一個變量:
Dim Str As String = "This is my first sub."
MyFirstSub(Str)
這兩種調用的效果是同樣的。因爲過程沒有返回值,沒有函數複雜,可是有了過程的基礎,相信學習函數是很是簡單的。
3.5 函數
3.5.1 什麼是函數
籠統地講,函數就是有返回值的過程。至於什麼是返回值,咱們已經講過,它至關於數學上函數的函數值。
3.5.2 關鍵字Function
函數的定義要用到關鍵字Function,和過程的定義大同小異:
Function 函數名(參數1,參數2……) As 返回值數據類型
代碼段
End Function
和過程相比,除了把Sub換成了Function以外,還多了一個As關鍵字,指的是返回值的數據類型。在執行功能的函數中,返回值每每是Boolean,用來指示執行是否成功。
3.5.3 關鍵字Return
Return,顧名思義,就是返回,用在函數或者過程當中。也許讀者有疑問,過程沒有返回值,爲何能用Return?事實上,Return並不只僅用於返回一個值,它有兩個用法。
第一個用法是直接打一個Return:
Return
這種用法只能出如今過程當中,一旦執行到這一句代碼,立刻退出過程,回到調用該過程的位置繼續執行。
另外一種用法是:
Return 返回值表達式
這種用法用在Function中,程序遇到這一句代碼,也會退出函數。不過在退出以前,先計算右側的返回值表達式,把表達式的值做爲返回值。而後退出函數,回到調用該函數的地方,給出返回值,繼續執行。
函數中只能使用第二種,可是不用Return也是合法的,不過可能會形成程序異常。在編譯的時候會給出警告,可是依然能夠經過編譯。
3.5.4 函數的定義
上面提到定義函數用的是關鍵字Function,返回值用關鍵字Return。下面定義一個用於計算兩數之和的函數:
Function AddFun(ByVal a As Integer, ByVal b As Integer) As Integer
Return a + b
End Function
上面定義的這個函數有兩個參數,有了前面的知識,相信你們看懂這個是沒有問題的。下面來複習一下上面的內容,讓咱們來定義一個函數,至關於數學中的f(x)=x^2+3x+5:
Function f(ByVal x As Integer) As Integer
Return x ^ 2 + 3 * x + 5
End Function
這很簡單,相信讀者都能作到,只是要注意3x中間要加一個星號,表示乘法。
3.5.5 函數的調用
函數的調用和過程的調用是一致的,只不過由於返回值的緣由,函數調用自己能夠做爲一個表達式。
例如,有函數定義以下:
Function AddFun(ByVal a As Integer, ByVal b As Integer) As Integer
Return a + b
End Function
那麼,如下代碼是合法的:
Dim ret As Integer
ret = AddFun(10, 2)
上面這段代碼中,第一行定義了一個整數變量用來儲存函數的返回值。第二行調用了函數,在執行第二行代碼的時候,程序先到AddFun處執行代碼,獲得返回值12,而後將12賦給ret變量。也就是說,AddFun(10,2)這個調用自己就是一個值。
所以,下面的代碼也是能夠的:
Dim ret As Integer
ret = AddFun(10, 2) + 5
執行以後,ret的值爲17。
這一章一口氣講了常量、變量、表達式、過程和函數,知識量有點大,這是筆者儘可能在避免的。不過知識老是要學的,有的教材在這一章就把後面的知識都講了,讀者每每要反覆看好多遍才懂。不過筆者認爲最好的學習狀態是在一頁一頁看得很順的時候,一旦返回前面去看,學習的熱情就很低了。所以對於事件、類等等更爲複雜的知識,筆者選擇在後面的章節中講述。在下一章中,筆者將爲讀者介紹幾種程序結構類型,它們是順序結構、選擇結構和循環結構。不過在本章的最後一節中,筆者將作一個實例,以鞏固本章的內容。
對於本書的實例,若是有條件實際操做,讀者最好能夠本身輸入代碼,本身調試程序。若是隻看教程不實操的話,再好的教材也是沒用的。由於到後面的知識是愈來愈難,若是前面的基礎知識不鞏固,後面是很難看懂的。
因爲不少讀者喜歡一口氣看幾章的教程,再上機操做,筆者特地把學習的過程拉長,目的就是讓初學者更好地掌握知識。若是在書裏遇到實在沒有辦法解決的問題,歡迎聯繫筆者。
3.6 用實例鞏固知識
3.6.1 建立項目
筆者在看書時,遇到相似這樣的實例,也喜歡只看書上的運行結果,看完就算了。事實上,上機操做和只是看看書的差異很大。也是由於這樣,筆者看了不少書都沒有學會一門語言,望各位讀者引覺得戒。
啓動Visual Studio,新建一個Windows窗體應用程序(Visual Sutdio 2005中爲「Windows 應用程序」),命名爲「App03」。
往窗體上添加三個Button控件,自動命名爲Button一、Button二、Button3。
3.6.2 爲程序添加代碼
雙擊Button1,來到代碼界面,看到以下的代碼:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesButton1.Click
End Sub
End Class
這部分代碼跟咱們以前見過的很像,以前的那個過程是Form1_Load,就是在Form1加載過程當中執行的代碼。而這個是Button1_Click,從名字上看,是Button1被點擊時執行的代碼段。
咱們定義函數和過程,必須在Class和End Class關鍵字的裏面,不過也不能在一個過程裏面定義過程,過程或函數之間應該是分開的,不能重疊。例如定義一個AddFun,完整的代碼就是:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesButton1.Click
End Sub
Function AddFun(ByVal a As Integer, ByVal b As Integer) As Integer
Return a + b
End Function
End Class
把調用的代碼放在Button1_Click過程當中,由於點擊按鈕時就會執行裏面的代碼。完整的代碼以下:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesButton1.Click
Dim ret As Integer = AddFun(3, 4)
MsgBox(ret)
End Sub
Function AddFun(ByVal a As Integer, ByVal b As Integer) As Integer
Return a + b
End Function
End Class
按F5,生成成功後,出現Form1,點擊按鈕,彈出消息框如圖:
也許讀者對這兩行代碼會有疑問:
Dim ret As Integer = AddFun(3, 4)
MsgBox(ret)
上面這兩行代碼中,第一行定義了一個整數變量ret,並賦初始值AddFun(3,4),也就是7,這應該沒有問題。可是在第二行中,咱們以前說過,MsgBox的第一個參數是字符串,也就是String。可是ret是Integer,爲何能放進MsgBox中呢,並且編譯過程尚未警告。
事實上,這涉及到數據格式間的隱形轉換,在後面的章節中咱們會討論這個問題。如今讀者只須要知道,直接把整數甚至浮點數放在MsgBox中做爲參數是能夠的,由於程序會自動將它轉換成字符串。
上面咱們提到過參數有兩種傳遞方式,分別是ByVal和ByRef,下面定義一個用於測試的過程:
Sub SubTest(ByVal a As String, ByRef b As String)
a = "Changed"
b = "Changed"
End Sub
上面這個過程有兩個參數,第一個是ByVal按值傳遞,第二個ByRef是按地址傳遞。按照咱們的設想,當傳入兩個變量做爲參數的時候,第二個變量應該會被改成「Changed」。其實在過程代碼執行的時候,這些修改都是有效的,只不過ByVal的參數的修改是對於一個值,而ByRef的參數修改則是對於傳入的變量。所以ByVal的參數修改會在過程結束後丟失,而ByRef的能夠保存。
雙擊Button2,在Button2_Click過程當中輸入以下代碼:
Dim Str1, Str2 As String
Str1 = "Not Changed"
Str2 = "Not Changed"
第一句代碼定義了兩個String變量Str1和Str2,並在第二第三句中將它們的值都賦爲「Not Changed」。若是將這兩個變量做爲參數傳入過程SubTest,後一個參數應該會變爲「Changed」,是否真的是這樣呢?在上面的三句變量後面再加上:
SubTest(Str1, Str2)
MsgBox(Str1 + Str2)
這裏的第一句把Str1和Str2做爲參數傳遞給SubTest,在SubTest中對它們做了從新的賦值。第二句把Str1和Str2鏈接起來並輸出。按F5編譯,在點擊Button2的時候出現瞭如圖的消息框:
可見,在執行SubTest以後,Str1的值仍然是「Not Changed」,而Str2的值改成了「Changed」,和咱們的預想是同樣的。
接下來讓咱們複習一下常量,爲何放在最後呢?由於常量的使用是不多的,讀者只須要有常量的概念便可。
在開始以前,先來看看剛纔寫的Button2_Click過程:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Str1, Str2 As String
Str1 = "Not Changed"
Str2 = "Not Changed"
SubTest(Str1, Str2)
MsgBox(Str1 + Str2)
End Sub
這裏定義了兩個變量,Str1和Str2。咱們以前說過,Dim定義的是局部變量,實際上這個說法是不許確的。Dim定義的變量,若是放在過程或函數的外面,就是全局變量。只不過若是定義的是局部變量,就只能使用Dim。
若是讀者對於局部變量和全局變量沒有概念,筆者在這裏做一個解釋。局部變量是定義在函數或者過程當中的,在執行過程當中分配內存,執行完這個函數或者過程以後,內存就被釋放。換句話說,別的函數或過程是訪問不了它的,只能在定義它的代碼段中訪問。
而全局變量是定義在Class中,Sub或Function外的,按照筆者的習慣,它們通常寫在程序的第二行代碼處。寫在Sub或Function外的變量或者常量,能夠被本Class中全部Sub或Function訪問,並且對於變量,在函數或過程結束後仍然保留對它的修改。
如今讓咱們定義一個全局常量,在Public Class Form1以後空出一行,寫入以下代碼:
Const PI As Double = 3.141592653
能夠看見全局常量和局部常量的定義是徹底同樣的,不一樣點只在於寫的位置。
因爲PI是全局常量,它能夠在任意一個函數或過程當中訪問了。
雙擊Button3,生成Button3_Click過程。在Button3_Click過程當中鍵入以下代碼:
Dim r As Double = 5
MsgBox(PI * r * r)
這裏的代碼,第一行定義了一個浮點數r,並賦初值5,用於表示圓的半徑。第二行代碼計算了圓的面積,圓周率正是使用了全局常量PI。
按F5運行,點擊Button3,彈出的消息框如圖:
輸出的結果就是半徑爲5的圓的面積。
做爲本章的實例,有些零散地複習了本章的內容。若是讀者有疑問,請在進入下一章的學習以前把這些內容搞懂。下一章咱們將開始學習程序的流程控制,也就是咱們經常據說的If結構、For結構等等。這些知識遠比本章的複雜,須要記憶的內容比較多,不過在熟練使用以後,就不存在記憶的問題了。
下面貼出本實例App03的所有代碼:
Public Class Form1
Const PI As Double = 3.141592653
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesButton1.Click
Dim ret As Integer = AddFun(3, 4)
MsgBox(ret)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesButton2.Click
Dim Str1, Str2 As String
Str1 = "Not Changed"
Str2 = "Not Changed"
SubTest(Str1, Str2)
MsgBox(Str1 + Str2)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesButton3.Click
Dim r As Double = 5
MsgBox(PI * r * r)
End Sub
Function AddFun(ByVal a As Integer, ByVal b As Integer) As Integer
Return a + b
End Function
Sub SubTest(ByVal a As String, ByRef b As String)
a = "Changed"
b = "Changed"
End Sub
End Class
上面的代碼中,按照筆者的習慣,全局變量及常量是放在第一行後面的,這樣寫能夠方便查閱。固然讀者能夠按照本身的習慣寫,可是務必要工整,這樣的代碼可讀性才高。
本實例App03的下載地址:
但願讀者能本身寫一次這個實例,若是能不看書寫出來,說明這章的知識你已經鞏固了。確認你掌握了本章的知識以後,趕快進入下一章的學習吧。