熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

在VB.NET編程中使用數組

2013-11-13 10:05:21  來源: .NET編程 

  數組是程序中經常要使用到的一種數據類型Visual BasicNet中的數組雖然語法結構等方面保留了和Visual Basic的很多相似之處但也與Visual Basic存在著很多區別其最大也是各位Visual Basic程序員所最不能容忍的區別就是如下二點

   在Visual Basic Net中申明一個數組其數組元素中的索引值的起點全部都為而不是以前Visual Basic中的索引值起點一般都為這種定義方法和Visual Basic Net的孿生姐妹Visual C#非常相似

   由於在Visual Basic Net中數組都有了統一的起點所以在Visual Basic Net中定義一個數組也就不再需要關鍵字To來設定數組的范圍這樣在Visual Basic Net中申明一個數組將會比Visual Basic中要稍微簡潔一點關於數組定義將在後面詳細介紹

  一.本節主要內容

  在接下來內容中將結合具體示例來詳細的介紹下列知識點

   申明數組其中包括一維數組多維數組也包括靜態數組和動態數組及其初始化和訪問數組中的元素

   重新申明數組即ReDim語句的使用用法及其Preserve關鍵字的作用

   使用For Each … Next語句來遍歷數組中各個元素For Each … Next語句是操作數據最為常用的一種語句它能夠方便的訪問到數組中的每一個元素

   申明參數為數組的過程或者函數由於數組是引用類型所以在申明參數為數組的函數或過程時處理方法與參數為值類型的函數或過程有點不一樣

   簡要介紹Array類和其主要的常用以及通過Array類操作數組的具體方法查看 更多內容請看Java編程開發手冊NET移動與嵌入式技術NET開發手冊專題或進入討論組討論

  在Visual BasicNet申明一個數組使用的依然是Dim語句其申明數組和Visual Basic的主要區別在上面內容中已經簡單說過了下面在Visual Basic Net申明一個長度為的字符串數組並對之進行初始化的代碼

  Dim arrString ( ) As String = {星期一星期二星期三}

  下面代碼是申請一個×的二維字符串數組並對之進行初始化

  Dim arrDate ( ) As String = {{星期一 } {星期二 }}

  靜態數組和動態數組的區別就在於靜態數組的長度是固定的而動態數組的長度是不固定的上面的申明的二個數組就是靜態數組而下面二段代碼的作用就是分別申明一個一維數組和二維數組並對它們進行初始化

  Dim arrString ( ) As String = {星期一星期二星期三}

  申明一個動態的一維數組並初始化

  Dim arrDate ( ) As String = {{星期一 } {星期二 }}

  申明一個動態的二維數組並初始化

  對其他數據類型和更多維數的數組其申明和初始化方法和上面的基本差不多只需根據數組的維數和數據類型的不同進行相應的修改就可以了

  當數組申明和初始化以後就可以通過元素在數組中對應的索引值來訪問下面二段代碼分別是訪問上面申明並初始化的一維數組和二維數組中的一個元素

  Dim sTemp As String = arrString ( )

  訪問arrString數組中的第個元素

  Dim sTemp As String = arrDate ( )

  訪問arrDate數組中的第二行第二列元素

  三.重新申明數組

  在Visual Basic Net重新申明數組和Visual Basic中基本類似依然使用的是ReDim語句在Visual Basic Net中使用ReDim語句要注意以下三點

   ReDim語句僅可以在過程級出現這意味著不可以在類或模塊級代碼區使用ReDim語句來重新申明數組

   ReDim語句只是更改已被正式聲明的數組的一個或多個維度的大小但不能更改該數組的維數

   ReDim語句無法更改數組中元素的數據類型和Dim語句申明數組的區別在於無法在ReDim語句中初始化重新申明的數組

  在使用ReDim重新申明數組時最為常見的關鍵字就是PreservePreserve的作用是表明在重新申明數組時是否要在重新申明的數組中復制原數組中的元素請比較下面二段代碼

  代碼一

  Dim arrString ( ) As String = {星期一星期二星期三}

  ReDim Preserve arrString ( )

  重新申明arrString數組數組的長度改為並且在新數組中復制原數組的元素

  arrString ( ) = 星期四

  arrString ( ) = 星期五

  代碼二

  Dim arrString ( ) As String = {星期一星期二星期三}

  ReDim arrString ( )

  重新申明arrString數組數組的長度改為並不往新數組中復制原數組的元素

  arrString ( ) = 星期一

  arrString ( ) = 星期二

  arrString ( ) = 星期三

  arrString ( ) = 星期四

  arrString ( ) = 星期五

  通過比較上述二段代碼可見在第一段代碼中由於ReDim中使用了Preserve關鍵字所以在重新申明數組時就在新數組中復制了原數組的元素這樣就只需要對其中的二個元素進行初始化而第二段由於沒有使用Preserve關鍵字就沒有在新數組中帶入原數組中的任何元素所以對數組的所有元素都進行初始化通過比較相信您對重新定義數組和Preserve關鍵字的使用有了更深的理解

  用Photoshop給漂亮的燙發MM摳圖

  Photoshop透明婚紗摳圖大法

  Photoshop:讓MM做個變色龍

  用Photoshop來制作一款精美的寶寶照片牆

  Photoshop絕色美女通道摳圖法

  用Photoshop教你打造絢麗光芒效果

  For Each … Next語句好像只是為二種數據類型專門度身定做的其一就是集合另外一個就是數組了通過For Each … Next語句可以十分方便的訪問數組中的任一元素請仔細分析一下下列代碼

  Dim arrString ( ) As String = {星期一星期二星期三}

  Dim Temp As String

  For Each Temp In arrString

  If Temp = 星期三 Then

  MsgBox ( 在數組中尋找到星期三字符串)

  Exit For

  退出For Each … Next語句

  End If

  Next

  上面代碼的功能是通過For Each … Next語句訪問arrString數組中各元素如果發現有元素為字符串星期三則彈出提示框並退出循環

  同樣用For … Next語句也能夠實現上面同樣的功能只是感覺有點不專業並且有點繁瑣下面代碼是用For … Next語句實現上面For Each … Next語句同等功能的代碼

  Dim i As Integer

  For i = To myStringLength

  If arrString ( i ) = 星期三 Then

  MsgBox ( 在數組中尋找到星期三字符串 )

  Exit For

  End If

  Next

  五.申明參數為數組的過程或者函數

  由於數組為引用類型所以如果以數組為參數過程和函數在定義時候就要多加以注意下面代碼是在Visual BasicNet申明一個參數為數組的過程的典型代碼可見在調用數組類型之前多了一個關鍵字ByValByVal關鍵字的作用在於在下面調用的過程中的不能更改數組的數值

  Sub DisplayArray ( ByVal myString ( ) As String )

  End Sub

  六.簡要介紹SystemArray類及其成員

  Array類是一個基類是公共語言運行庫中所有數組的基類它提供了創建操作搜索和排序數組的方法數組中任一個元素就是Array中的一個值Array的長度是它可包含的元素總數Array的秩是Array中的維數Array中維度的下限是Array 中該維度的起始索引多維Array的各個維度可以有不同的界限和表分別是Array類的常用屬性和常用方法及其說明

  

屬性 說明 IsFixedSize 獲取指示Array是否具有固定大小的值 IsReadOnly 獲取指示Array是否為只讀的值 Length 獲取Array的所有維度中的元素總數 Rank 獲取Array的秩(也就是維數)

  

  表SystemArray類的常用屬性及其說明

  


方法
說明 BinarySearch 使用二進制搜索算法在一維的排序Array中搜索值 Clear 將Array中的一系列元素設置為零false或空引用(即Nothing)具體操作時設定值取決於元素類型 Copy 將一個Array的一部分復制到另一個Array中並根據需要執行強制類型轉換和裝箱 CopyTo 將當前一維Array的所有元素復制到指定的一維Array中(從指定的目標Array索引開始) GetLength 獲取Array的指定維度中的元素數 GetLowerBound 獲取Array中指定維度的下限 GetUpperBound 獲取Array的指定維度的上限 GetValue 獲取當前Array中指定元素的值 LastIndexOf 返回一維Array或部分Array中某個值的最後一個匹配項的索引 Reverse 反轉一維Array或部分Array中元素的順序 SetValue 將當前Array中的指定元素設置為指定值 Sort 對一維Array對象中的元素進行排序

  表SystemArray類的常用方法及其說明巧 巧 讀 書:更多內容請看Java編程開發手冊NET移動與嵌入式技術NET開發手冊專題或進入討論組討論

  下面介紹的示例的功能包含了數組的申明初始化重新申明重新初始化數組中各元素的排序數組的遍歷查找以及以數組為參數的過程的定義及調用方法等下面是此示例實現的具體步驟

   啟動Visual Studio Net

   選擇菜單【文件】|【新建】|【項目】後彈出【新建項目】對話框

   將【項目類型】設置為【Visual Basic項目】

   將【模板】設置為【Windows應用程序】

   在【名稱】文本框中輸入【數組】

   在【位置】的文本框中輸入【E:VSNET項目】然後單擊【確定】按鈕這樣在E:VSNET項目目錄中就產生了名稱為數組的文件夾並在裡面創建了名稱為【數組】的項目文件

   把Visual Studio Net的當前窗口切換到【Formvb(設計)】窗口並從【工具箱】中的【Windows窗體組件】選項卡中往Form窗體中拖入下列組件並執行相應操作

  四個Button組件分別用來創建一個創建一維數組創建創建二維數組實現對對一維數組排序和實現重定義一維數組並在這四個Button組件拖入Form的設計窗體後分別雙擊這四個組件這樣系統會在Formvb文件分別產生這四個組件的Click時間對應的處理代碼

  一個ListBox組件用來顯示創建的一維數組的內容

   按照表中數值來設定設定組件的主要屬性

  

組件類型 組件名稱 屬性 設置結果
Form Form Text 數組篇 Form MaximizeBox False Form MinimizeBox False Form FormBorderStyle FixedSingle
ListBox ListBox ItemHeight ListBox Location Point ( ) ListBox Size Size ( )
Button Button Text 創建一維數組 Button FlatStyle Flat Button Text 創建二維數組 Button FlatStyle Flat Button Text 對一維數組排序 Button FlatStyle Flat Button Text 重定義一維數組 Button FlatStyle Flat

  表【數組】項目窗體中各組件的主要屬性設定數值表

  並按照圖中各組件的位置大小和排列方式來調整窗體中各個組件

  

  圖【數組】項目的設計界面

   把Visual Studio Net的當前窗口切換到【Formvb】進入Formvb文件的編輯界面然後用下列的代碼替換Formvb中Button組件的Click事件對應的處理代碼下列代碼的功能是通過創建輸入對話框來創建一個一維數組

  Private Sub Button_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles ButtonClick

  Dim i As Integer

  For i = To

  arrString ( i ) = InputBox ( 請在下面文本框中輸入字符串 請輸入字符串 來初始化創建的一維數組! Item &i )

  Next

  ButtonEnabled = True

  ButtonEnabled = True

  DisplayArray ( arrString )

  End Sub

   用下列的代碼替換Formvb中Button組件的Click事件對應的處理代碼下列代碼的功能是創建一個二維數組並進行初始化

  Private Sub Button_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles ButtonClick

  Dim arrDate ( ) As String = {{星期一 } {星期二 }}

  創建一個二維數組並初始化

  MsgBox ( arrDate ( ) )

  訪問這個二維數組中的元素

  End Sub

   用下列的代碼替換Formvb中Button組件的Click事件對應的處理代碼下列代碼的功能是首先定義一個名稱為DisplayArray的過程此過程能夠對給定的一維數組中的數據進行排序並通過ListBox顯示出來其次是定義Button的Click事件在此事件中對調用DisplayArray過程對一維數組中的數據進行排序

  定義一個過程過程的功能是通過ListBox組件顯示給定的字符串數組中各元素

  Sub DisplayArray ( ByVal myString ( ) As String )

  ListBoxItemsClear ( )

  Dim Temp As String

  For Each Temp In myString

  ListBoxItemsAdd ( Temp )

  Next

  End Sub

  Private Sub Button_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles ButtonClick

  ArraySort ( arrString )

  DisplayArray ( arrString )

  End Sub

  

   用下列的代碼替換Formvb中Button組件的Click事件對應的處理代碼下列代碼的功能是重新定義一維數組

  Private Sub Button_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles ButtonClick

  ReDim Preserve arrString ( )

  請注意Preserve關鍵字的作用

  Dim i As Integer

  For i = To

  arrString ( i ) = InputBox ( 請在下面文本框中輸入字符串 請輸入字符串 來初始化重新創建的一維數組! Item &i )

  Next

  DisplayArray ( arrString )

  End Sub

   保存上面的所有修改至此【數組】項目的全部工作就完成了此時單擊快捷鍵F運行程序是程序編譯後的運行界面

  

  圖輸入字符串來初始化一維數組的界面

  

  圖對一維數組中的各元素進行排序後的界面

  八.總結

  本文首先介紹了Visual Basic Net中的數組和原先版本的Visual Basic中的區別在Visual Basic Net中數組從內涵上更像Visual C#其次介紹了數組的申明方法其中包括一維數組多維數組也包括靜態數組和動態數組初始化數組及其訪問數組中的元素接著介紹了重新申明數組方法即ReDim語句的使用用法及其Preserve關鍵字的作用以及使用For Each … Next語句來遍歷數組中各個元素For Each … Next語句是操作數據最為常用的一種語句它能夠方便的訪問到數組中的每一個元素比用For ……Next語句要方便了許多最後介紹在以數組為參數的過程和函數的調用方法和Array類和其主要的使用方法之所以提出來介紹以數組為參數的過程和函數的調用方法是因為數組是引用類型所以在申明參數為數組的函數或過程時處理方法與參數為值類型的函數或過程有點不一樣Array是Net FrameWorkSDK中提供用來操作數組的類本文主要是介紹利用Array類操作數組的具體方方法法以上就是本文的主要內容相信仔細閱讀並進行相應練習的讀者一定已經掌握了


From:http://tw.wingwit.com/Article/program/net/201311/12527.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.