VB.NET 數組的定義 動態使用 多維數組

 

咱們都知道在所有程序設計語言中數組都是一個很是重要的概念,數組的做用是贊成程序猿用同一個名稱來引用多個變量,所以採用數組索引來區分這些變量。很是多狀況下利用數組索引來設置一個循環,這樣就可以高效地處理複雜的狀況,所以在很是多狀況下,使用數組可以縮短或者簡化程序的代碼。本文主要介紹VB.NET數組的使用,但願對你們的使用帶來幫助。 編程


數組中的第一個元素的下標稱爲下界,最後一個元素的下標稱爲上界,其他的元素連續地分佈在上下界之間,並且數組在內存中也是用連續的區域來存儲的,因此要求聲明數組每維的長度不能超過Long數據類型的最大值,即264—1=263。 數組

咱們把VB.NET數組看成一個對象來處理,這就意味着數組類型是單個引用類型,數組變量包括指向構成數組元素、數組維和數組長度等數據的指針,數組之間互相賦值事實上僅僅是在相互複製指針,而且數組繼承了System名字空間的Array類。函數

VB.NET中提供的數組類型和VB 6.0中有一些區別,咱們將在如下作具體的解說。spa

(1)VB.NET數組的聲明操作系統

VB.NET中的數組有兩種類型:定長數組和動態數組。這裏先介紹定長數組的幾種不一樣的聲明方式,不一樣的聲明方法將致使數組不一樣的有效範圍。設計

◆Dim語句在模塊段創建模塊級數組,好比:指針

  
  
  
  
  1. Dim arrayl(3)As Integer  

◆Public語句在模塊的聲明部分創建一個公共數組,好比:server

  
  
  
  
  1. Public counttype(20)as string  

◆Static語句聲明一個過程內的局部數組,好比:xml

  
  
  
  
  1. Public Sub Ipaddress()  
  2. Static server(30)as string  
  3. End Sub 

VB.NET還提供了新的數組初始化語法,僅僅需要簡單的語句就可以完畢數組的聲明和初始化,好比:對象

  
  
  
  
  1. New array initialization syntax  
  2. Dim arrayl As Integer()={2,4,8} 

在VB.NET中,爲了和其它語言更加易於協同操做,數組的下標均設定爲0,不一樣意聲明一個下界爲1的數組,所以Option Base語句再也不被VB.NET支持,而且在聲明一個數組時必須用它的元素個數,而不是它的上界來初始化,好比:

  
  
  
  
  1. //聲明一個一維數組具備3個元素,下標從0~2  
  2. Dim arrayl(3)As Integer  
  3. arrayl(0):2  
  4. arrayl(1)=4  
  5. arrayl(2)=8 

以上聲明的數組有三個元素,下標從0到2,假設代碼企圖訪問下標爲3的數組元素,將引發執行錯誤。

(2)二維數組及多維數組

除了較爲簡單的一維數組外,VB.NET還支持多維數組,其聲明方法和一維數組沒有太大的差異,好比:

  
  
  
  
  1. StatiC multidim(10,10)as double  
  2.  Public Singledim(5,8,10,3)as single 

以上語句聲明瞭一個lO行,10列的二維數組。在VB.NET中,數組最多有32維,而且每一維的長度都不能夠超過Long數組類型的最大值。數組總尺寸的限制是不同的,這與所採用的操做系統以及計算機中使用的內存量有關。數組的維數將保留在System.Array.Rank屬性中,每維的長度能夠由System.Array.GetLengfll方法來獲得。需要提醒注意的是,由於VB.NET中數組是以0爲基的,假設返回來的值爲9,則表示數組是10維的。當爲數組繼續加入維數的時候,使其擴展爲多位數組,此時會使數組所需的存儲空間大幅度添加,因此在使用多維數組時對這個方面也要多加考慮。

另外VB.NET還提供了Lbound()和Lbound()兩個函數來返回數組的上、下界。中國自學編程網整理公佈 ,www.zxbc.cn對於一維數組而言,僅僅需要一個參數,那即是數組名。好比:

  
  
  
  
  1. one==Ubound(arrayl) 

對於多位數組,也僅僅是簡單地將逗號後面的第二個參數指定爲數組的第幾維。好比:

  
  
  
  
  1. tw0=Lbound(multidim,7) 

假設沒有指明是哪一維,系統默以爲第一維。

(3)動態數組

有時在程序執行以前沒法確認數組的大小,VB.NET提供了在程序執行時動態決定數組大小的功能,即動態數組。它具備靈活多變的特色,可以在不論何時依據需要隨時改變數組的大小,有助於內存的管理。創建一個動態數組的具體過程例如如下:

①和聲明通常數組同樣,可以使用前面介紹的幾種聲明,僅僅是賦一個空維數組,這樣就將數組聲明爲動態數組。典型的聲明語句爲:

  
  
  
  
  1. Dim types(  )  As integer 

②而後使用ReDim語句來配置數組大小。ReDim語句聲明僅僅能在過程其中使用,它是可運行語句,可以改變數組中元素的個數,但是卻不可以改變數組的維數,就是說不能把一維變爲二維。在ReDim語句配置數組元素個數時,數組中的內容將全部置爲0。典型語句爲:

  
  
  
  
  1. ReDim Types(X+1)  

③假設想改變數組大小又不想丟失原來的數據,僅僅要在ReDim語句中包括Preservekeyword就可以,典型語句爲:

  
  
  
  
  1. ReDa_m PresetVe Types(10,23) 

對於多維數組,在使用Preservekeyword時,僅僅能改動最後一維的大小。假設改變其它維,那麼將出現執行錯誤。假設不清楚某維的當前大小,可以使用GetI~ength函數來獲取。

(4)VB.NET數組的使用

在’VB 6.0中,可以用For Each來循環遍歷一個數組。好比:

  
  
  
  
  1. Dim x As Integer  
  2.   F0r Each x In arrayl  
  3.   Console.WriteLine(x)  
  4.   Next 

在VB.NET中可以使用For循環和數組長度來遍歷一個數組。好比:

  
  
  
  
  1. Dim i As工nteger  
  2.    F0r i=0 T0  (arrayl.Length-1)  
  3.  
  4.    Console.WriteLine(arrayl(1)J  
  5.    Next i  

在使用數組時還要注意,不只聲明語法有變化,而且在執行時處理方式也有了很是大的變化。VB.NET在堆棧中給數組分配地址空間,當向一個方法傳遞數組類型的參數時,使用的是引用傳遞而不是值傳遞。如下是互相傳遞數組引用的三個方法:

  
  
  
  
  1. Dim arrayl(3,3)AS Integer  
  2.     Dim array2 As Integer(,)  
  3.     Redim array2(3,3)  
  4.     Dim array3 As Integer(,)={{2,4},{12,29}}  

方法一在兩個方向同一時候傳遞了數組引用,通常用來向調用者返回數組引用。方法二和方法三從調用者向方法的實現中傳遞了數組引用。方法二的參數被聲明爲一維數組,而在方法三中參數被聲明成了-維數組。

(5)數組的高級特性

①數組的數組

在O~ect數組中還可以組裝不一樣類型的數組。好比,下面代碼中先創建兩個數組,一個是Integer類型,還有一個是String類型,而後再聲明一個O~ect類型的數組,把前兩個數組分裝在當中。

  
  
  
  
  1. Dim I as integer  
  2. //聲明一個integer類型的數組  
  3. Dim grade(15)as integer  
  4. For i:0 tO 14  
  5. Grade(i)=i  
  6. NeXt i  
  7. //聲明一個string類型的數組  
  8. Dim name(15)as String  
  9. For i=0 tO 14  
  10. Name(i):」Student」&cstr(i)  
  11. Next i  
  12. //聲明一個新的數組爲object,用來組裝其它數組  
  13. Dim Student(2)as object  
  14. Student(0)=grade  
  15. Student(1)=name  
  16. Msgbox(student(0)(2))  //顯示」2」  
  17. Msgbox(student(1)(3))  //顯示」student 3」。 

上述代碼中使用了student(0)和student(1)的後綁定。注意,僅僅有在Option s~ict被關閉時,VB.NET編譯器才贊成使用後綁定。

②數組和集合

儘管集合通常用於操做對象,但是它也能操做數據類型。在某些條件下,其效率比數組還要高。咱們可以經過下面4個方面來進行比較。

◆集合可以依據需要進行擴充,不像數組那樣需預先規定大小。

◆數組僅僅能保存聲明時所定義的數據類型,但是同一個集合中可以存儲不一樣類型的數據。

◆集合元素的改動較爲麻煩,不像數組那麼方便。

◆處理集合的速度較數組慢,但是在處理較小的動態條目集,使用集合是最爲理想的選擇。

相關文章
相關標籤/搜索