當我們鍵入MessageBox. 的時候,會自動出現 show這個方法
而MessageBox所有的成員也只有這個方法,但實際上,show 並不是MessageBox的成員
如果您有仔細看的話,就會看到 , show 這個其實是一個分享函數(有人稱之為靜態函數)
如果我們看到show 的標頭定義,包含了shared這個字
public shared function show(..........) as dialogresult
就可以了解,這個函數其實可以直接透過類別存取,而不用透過實體存取
所以我們不會寫這樣的程式碼 dim x as new messagebox
然後再來 x.show , 這是錯誤的
另外,show這個函數可以傳回 dialogresult 這個數值, 它其實是一個常數,我們會在後面用到它
再者,show其實是一個有20種形態的多載函數,它讓一個函數可以有相同的名稱,卻有著不同的輸入方式
這使得名稱的使用上更具有彈性空間,同樣的動作名稱,卻有者不同的呈現方式,這樣的方式,讓程式碼的
管理更加的方便,以下我們鍵入一個多載的show 方法
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If MessageBox.Show("MyFirstProgram", "WindowsForm ", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes Then
上面的程式碼中 Dim 時 As Integer 就是宣告,而變數的性質就是整數,整數是一種型別,說型別好像有一點專業,我個人一向不喜歡專業,因為專業好像是要讓人聽不懂
你可以想像成是一種分類,把各種不同的東西加以分類,就是寫程式的基礎,而且也是一種管理
那麼visual basic 有多少種類似於整數的這種分類,以下稍做整理
string 字串
char 字元
byte 位元組
sbyte 位元組
short 短整數
integer 整數
long 長整數
Decimal
single 單精度浮點數
double 雙精度浮點數
date 日期
boolean 布林
object 物件
當然看了以上的宣告就知道我們都可以模仿,利如
dim x as string
就是宣告一個字串
dim x as single
就是宣告一個單精度的浮點數
所謂的浮點數就是可以帶有小數點以下的數字
或者我們也可以這樣宣告,利用","分開不同資料型態的來宣告
例如: dim x as single, y as double, z as decimal
當然我們也可以一開始就給變數指定值
例如 dim x as single = 3.5,y as string = "Hello World"
另外,我們可以加註解到程式碼中,而編譯時,編譯器就不會去理會這個註解,註解的符號就是 '
利如
dim y as date ' y 是 日期的型態
在 ' 符號後面的文字會被忽略, 讓我們可以用來記錄一些程式碼的目的,或是其它要事作者: 呆呆 時間: 2010-5-9 00:28
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Decimal = 5262.2358D
Dim b As Decimal = 12.62354D
Dim c As Decimal
c = a * b
MessageBox.show(c.ToString)
End Sub
End Class
複製代碼
實際上 a 這個數值 在指定為5262.2358時如果不加D那實際上是會以內定為double的型態來指定,而這樣的話就會發生型態沒有轉換而形成錯誤
,而且當編譯器開始時會將a乘上10的4次方變為52622358整數,一樣的12.62354會乘上10的5次方便為整數,再進行相乘,得到結果後再除於10的9次方來得到答案
Boolean 布林, 不是true(-1) 就是 False(0)
Date 日期
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim date1 As Date = #1/1/2010#
Dim date2 As Date = #1/2/2010#
MessageBox.Show((date2 - date1).ToString)
End Sub
複製代碼
Char 字元 其宣告方式和指定方式如下
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim 時鐘 As New 會報時的時鐘
MessageBox.Show(時鐘.報時)
End Sub
End Class
複製代碼
這樣,我們很清楚的看到,我們只要繼承原本的時鐘類別,就是得到一個新的報時時鐘,這個時鐘有一個功能,或者稱之為函數,他被包在時鐘之中了
和上面程式碼不同的是,如果我們是從外界看時鐘,那就會寫成不會報時的時鐘樣式,但如果是時鐘可以報時,那就會寫在時鐘類別中而成為會報時的時鐘類別
就是這麼簡單
Function 這個就是函數就意思,而每個Function 之完結會有End Function
表示這個函數到此終結
那麼從外界來看這個程式碼是不是就是成了 Dim 時鐘 As New 會報時的時鐘 ' 我產生的一個會報時的時鐘
MessageBox.Show(時鐘.報時) '時鐘報時作者: 呆呆 時間: 2010-5-9 01:34
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作者: 呆呆 時間: 2010-5-15 13:36
本帖最後由 呆呆 於 2010-5-27 23:18 編輯
陣列
當我們要宣告一堆變數而且是同一性質的,我們會他們集合在一起用一個容器給他們然後這個容器有大小,這種容器稱之為陣列
利如 字串甲,乙,丙,丁 不會去這樣宣告
dim 字串甲 as string
dim 字串乙 as string
dim 字串丙 as string
dim 字串丁 as string
我們會宣告一個陣列,其方式如下
dim 字串集合(3) as string
3就是這個字串陣列索引的 上限
而這個字串陣列的索引下很就是0,所以整個字串陣列的字可存取個數為0~3,共有四個
舉個利子
Public Class Form1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim 一星期(6) As String
一星期(0) = "星期日"
一星期(1) = "星期一"
一星期(2) = "星期二"
一星期(3) = "星期三"
一星期(4) = "星期四"
一星期(5) = "星期五"
一星期(6) = "星期六"
MessageBox.Show(一星期(5))
End Sub
End Class
複製代碼
當然你也可以一開始就給起始值如同一以下範例
陣列內的索引值不用給,直接由後面起始值的數量來決定
Public Class Form1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim 一星期() As String = {"星期日", "星期一", "星期二", "星期三", "星期四", " 星期五", "星期六"}
MessageBox.Show(一星期(5))
End Sub
End Class
複製代碼
您也可以利用迴圈來做一次存取如下
Public Class Form1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim 一星期() As String = {"星期日", "星期一", "星期二", "星期三", "星期四", " 星期五", "星期六"}
For Each day As String In 一星期
MessageBox.Show(day)
Next
End Sub
End Class
複製代碼
以上稱為一維陣列,也就是只有一個索引值在陣列中
我們也可以宣告一個二維陣列,那就是
dim Cell(RowIndex,ColumnIndex) as integer
既然這裡有一堆 Excel 玩家,那用excel儲存格來解式是最快的,一個儲存格的位置在第幾行,第幾列這樣就夠清楚了吧
但excel好像是從第一行開始,而陣列是從第0行開始這是要注意的地方
那三維陣列呢,那就是
dim cell(workSheetIndex,rowindex,columnindex) as integer
也就是去找第幾張工作表中的行列值
那四維的意義呢
dim cell(FileIndex,worksheetindex,rowindex,columndex) as integer
也就是在同一個資料夾內,如果檔名是命成1,2,3的流水號,那就cell(1,2,3,4)的意義就是 第一個檔案中的第二張工作表中的第三列第四行的值
那二維陣列要如何存取
以一下是一個例子
Public Class Form1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim A(,) As Integer = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, _