濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > ASP定義數(shù)組方法的技巧

ASP定義數(shù)組方法的技巧

熱門標(biāo)簽:不封卡外呼系統(tǒng)一般多少錢 地圖標(biāo)注中心多少錢注冊(cè) 北京大興區(qū)地圖標(biāo)注 濰坊呼叫中心外呼系統(tǒng)供應(yīng)商 微信地圖標(biāo)注有什么用 地圖標(biāo)注不完整被罰款 鄭州語(yǔ)音電銷機(jī)器人官網(wǎng) 重慶外呼電銷系統(tǒng)費(fèi)用 電銷機(jī)器人一個(gè)多少錢

數(shù)組是有序數(shù)據(jù)的集合。數(shù)組中的元素可以不屬于同一個(gè)數(shù)據(jù)類型。用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定數(shù)組中的元素,更改其中一個(gè)元素并不會(huì)影響其它元素。數(shù)組的下標(biāo)是有界的,分為下界和上界。數(shù)組可以用Dim、Private、Public或Static來聲明,它們的語(yǔ)法格式相同。下面只介紹用Dim聲明數(shù)組的方法。

1.?dāng)?shù)組的定義與聲明
數(shù)組的定義語(yǔ)法如下:

Dim 數(shù)組名( [[下標(biāo)下界 To ] 下標(biāo)上界] ) [As 數(shù)據(jù)類型]

例如(假設(shè)在當(dāng)前模塊中 數(shù)組的缺省下界為0)):

① Dim A(10) As Integer

表示數(shù)組名為A,此數(shù)組下標(biāo)下界為缺省值0,下標(biāo)上界為10,有11個(gè)Integer類型的元素,從A(0)、A(1)到A(10)。

② Dim B(1 To 20) As Integer

表示數(shù)組名為B,此數(shù)組下標(biāo)下界為1,下標(biāo)上界為20,有20個(gè)Integer類型的元素,從B(1)到B(20)。

③Dim DayArray(50)

表示DayArray 是一個(gè)有 51 個(gè)索引(從 0 到 50)元素的 Variant 數(shù)組。

④Dim Matrix(3, 4) As Integer

表示Matrix 是一個(gè)二維 Integer 數(shù)組。

⑤Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double

表示MyMatrix 是一個(gè)顯式指定了上下界的三維 double 數(shù)組。

⑥D(zhuǎn)im BirthDay(1 To 10) As Date

表示BirthDay 是一個(gè)索引從 1 到 10 的 Date型 數(shù)組。

2.Option Base 語(yǔ)句
Option Base 語(yǔ)句在模塊級(jí)別中使用,用來聲明數(shù)組下標(biāo)的缺省下界。

Option Base 語(yǔ)句的語(yǔ)法如下:

Option Base {0 | 1}

  說明:缺省狀態(tài)下數(shù)組下界為 0,此時(shí)無需使用 Option Base 語(yǔ)句。如果使用該語(yǔ)句規(guī)定數(shù)組下界1,則必須在模塊的數(shù)組聲明之前使用Option Base 語(yǔ)句。

注意:

(1)Dim、Private、Public、ReDim 以及 Static 語(yǔ)句中的 To 子句提供了一種更靈活的方式來控制數(shù)組的下標(biāo)。不過,如果沒有使用 To 子句顯式地指定下界,則可以使用 Option Base 將缺省下界設(shè)為 1。使用 Array 函數(shù)創(chuàng)建的數(shù)組的下界也受 Option Base 語(yǔ)句指定的下界的決定, 除非 Array 是由類型庫(kù)(例如 VBA.Array )名稱限定,如果是由類型庫(kù)名稱限定,則 使用Array 函數(shù)創(chuàng)建的數(shù)組的下界不受 Option Base 的影響。

(2) Option Base 語(yǔ)句只影響位于包含該語(yǔ)句的模塊中的數(shù)組下界。

關(guān)于數(shù)組聲明的幾點(diǎn)說明:

①數(shù)組名命名規(guī)則和變量名的相同。

②數(shù)組名后是用圓括弧括起來的,不能用方括弧,不同于C語(yǔ)言。

③下標(biāo)的下界必須不能大于其上界。

④可以用變量名或常數(shù)名(以及實(shí)數(shù))作下標(biāo)的邊界。當(dāng)下標(biāo)的邊界是常數(shù)名時(shí),數(shù)組的大小固定,當(dāng)下標(biāo)的邊界是變量名時(shí),數(shù)組的大小可作動(dòng)態(tài)定義,即數(shù)組的大小取決于程序運(yùn)行過程中變量的值。因此,VB 中數(shù)組又可以分為兩種數(shù)組:靜態(tài)數(shù)組、動(dòng)態(tài)數(shù)組。

3.靜態(tài)數(shù)組
靜態(tài)數(shù)組是指數(shù)組元素的個(gè)數(shù)是固定不變的,即它們占用的內(nèi)存空間大小是固定不變的。根據(jù)固定大小數(shù)組的維數(shù)不同,可以將它分為一維數(shù)組和多維數(shù)組。

聲明多維數(shù)組的語(yǔ)法格式為:

Dim 數(shù)組名([下標(biāo)邊界列表]) [As 數(shù)據(jù)類型]

下標(biāo)邊界的定義形式:[下標(biāo)下界 To]下標(biāo)上界

下標(biāo)邊界列表指用逗號(hào)分開的數(shù)組各維的下標(biāo)邊界,即

[下標(biāo)下界 To]下標(biāo)上界,[下標(biāo)下界 To]下標(biāo)上界,……,[下標(biāo)下界 To]下標(biāo)上界

(第一維) (第二維) (第n維)

當(dāng)n=1時(shí),數(shù)組稱作一維數(shù)組;當(dāng)n=2時(shí),數(shù)組稱作二維數(shù)組;依次類推,當(dāng)n=m時(shí),數(shù)組稱作m維數(shù)組。

下面舉例介紹一維數(shù)組的使用。

'聲明一個(gè)長(zhǎng)度為51的字符串?dāng)?shù)組FriendsName

Dim FriendsName(50) As String

'聲明一個(gè)長(zhǎng)度為11的全局整型數(shù)組Class

Public Class(10) As Integer

一維數(shù)組中的元素個(gè)數(shù)為(上界-下界+1)。

為數(shù)組賦初值可以采用循環(huán)語(yǔ)句,如:

Dim I As Integer

For I = 0 To 11 '循環(huán)語(yǔ)句的使用程序流程的控制

C(I) = I

Next I

  如果不顯式指定下標(biāo)下界,則數(shù)組的下標(biāo)下界由 Option Base 語(yǔ)句控制。如果沒有 Option Base 語(yǔ)句則下界為默認(rèn)為 0。

數(shù)組的維數(shù)并不限于2,在VB中,可以擴(kuò)大至于60,在實(shí)際應(yīng)用上對(duì)三維以上的數(shù)組的應(yīng)用是不多的。定義一個(gè)多維數(shù)組時(shí)只需一條Dim語(yǔ)句指定數(shù)組的所有下標(biāo)邊界即可,使用多維數(shù)組的可以很方便的表示一些有意義的統(tǒng)計(jì)數(shù)據(jù)。例如:

Dim Profit(16,10,12) As Currency

這個(gè)Profit數(shù)組可用來表示以店名、部門及月份為參數(shù)的某百貨公司的利潤(rùn)。如:Profit(2,8,11)代表了第二分店的第八部門在11月份的利潤(rùn)。

4.動(dòng)態(tài)數(shù)組
有時(shí)在數(shù)組開始使用前,不能知道需要多大的數(shù)組才能滿足實(shí)際需要。當(dāng)然可以把數(shù)組的大小定義到足夠大來滿足任意的實(shí)際應(yīng)用需要,這種方法效率很低(大量浪費(fèi)內(nèi)存空間)。如果使用動(dòng)態(tài)數(shù)組,就可以在程序運(yùn)行時(shí)根據(jù)實(shí)際需要,精確定義數(shù)組的大小。

在聲明數(shù)組時(shí),不給出維數(shù)列表就是將數(shù)組聲明為動(dòng)態(tài)數(shù)組。例如:

Dim MyArry() As Integer

在使用動(dòng)態(tài)數(shù)組前,必須使用ReDim語(yǔ)句把它重新定義。如前面聲明的數(shù)組MyArry,可以用以下語(yǔ)句將它定義為一個(gè)動(dòng)態(tài)二維數(shù)組。

ReDim MyArry(10,10)

還可以通過重復(fù)執(zhí)行ReDim語(yǔ)句,多次定義動(dòng)態(tài)數(shù)組。使用ReDim最多能定義數(shù)組的維數(shù)是60。ReDim語(yǔ)句可以改變數(shù)組每維的元素個(gè)數(shù),但不能改變維數(shù)。下面是對(duì)ReDim語(yǔ)句的一個(gè)標(biāo)準(zhǔn)應(yīng)用舉例。

Dim MyArry() As Single ‘聲明動(dòng)態(tài)數(shù)組

ReDim MyArry(30,20,10) ‘重新定義數(shù)組

ReDim MyArry(50,23,21) ‘再次重新定義數(shù)組

ReDim的語(yǔ)法與Dim的相同,此外,它還有選擇項(xiàng)Preserve關(guān)鍵詞:

ReDim Preserve 數(shù)組名 ([ [下標(biāo)下界 To]下標(biāo)上界]) [As 數(shù)據(jù)類型]

例如:

ReDim MyArry(50,23,21)

ReDim Preserve MyArry(50,23,50)

注意:使用ReDim 時(shí),重新定義數(shù)組會(huì)使所有數(shù)組元素的值消失,而使用Preserve可以保留數(shù)據(jù)。但是用Preserve只能在改變數(shù)組的最后一維的大小時(shí),保留數(shù)組的數(shù)據(jù)。對(duì)于一維數(shù)組來說,所有數(shù)據(jù)都會(huì)保留,而對(duì)于多維數(shù)組:只能改變最后一維的大小,才能保留全部數(shù)組數(shù)據(jù),否則出錯(cuò)。

5.LBound 函數(shù)和UBound 函數(shù)
LBound 函數(shù)和Ubound函數(shù)都是返回一個(gè) Long 型數(shù)據(jù),前者得到的值為指定數(shù)組維可用的最小下標(biāo),而后者得到的是最大下標(biāo)。它們的語(yǔ)法為:

LBound(數(shù)組名[, 指定的維數(shù)])

UBound(數(shù)組名[, 指定的維數(shù)])

  其中數(shù)組名是必選的。指定的維數(shù)是可選的,表明指定返回哪一維的下界。1 表示第一維,2 表示第二維,如此類推。如果省略指定的維數(shù),就默認(rèn)為是 1。

關(guān)于如何使用LBound 函數(shù)與 UBound 函數(shù)可參見下例:

Dim A(1 to 100,3,-3 to 4) As Integer '定義一三維數(shù)組,假定沒有使用Option Base 語(yǔ)句改變數(shù)組下界的默認(rèn)值。

對(duì)數(shù)組A使用Lbound 和Ubound函數(shù),其返回值列表如下

所有維的缺省下界取決于 Option Base 語(yǔ)句的設(shè)置。可以看出對(duì)一數(shù)組使用LBound 函數(shù)與 UBound 函數(shù),可用于確定一個(gè)數(shù)組中元素的個(gè)數(shù)。

對(duì)于那些在聲明中用 To 子句來設(shè)定維數(shù)的數(shù)組而言,它們可以用任何整數(shù)作為下界而不受Option Base 語(yǔ)句的限制。

6.?dāng)?shù)組的高級(jí)功能
盡管數(shù)組最通常被用來存儲(chǔ)成組的變量,但是在別的一些方面數(shù)組也是很有用的??梢詫⒁粋€(gè)數(shù)組的內(nèi)容賦值給另一個(gè)數(shù)組、創(chuàng)建返回?cái)?shù)組的函數(shù),還可以創(chuàng)建返回?cái)?shù)組的屬性。在許多情況下,這些技術(shù)能改進(jìn)應(yīng)用程序的性能。

正如可以將一個(gè)變量的值賦給另一個(gè)變量,例如 StrA = StrB ,也可以將一個(gè)數(shù)組的內(nèi)容賦給另一個(gè)數(shù)組。例如,要將一字節(jié)型數(shù)組從一個(gè)位置復(fù)制到另一個(gè)位置。可以通過每次復(fù)制一個(gè)字節(jié)來實(shí)現(xiàn),程序如下:

Sub ByteCopy(oldCopy() As Byte, newCopy() As Byte)

‘參數(shù)oldCopy()是源數(shù)組,newCopy()是目標(biāo)數(shù)組

Dim i As Integer

ReDim newCopy (Lbound(oldCopy) To UBound(oldCopy)) '重新定義動(dòng)態(tài)數(shù)組

For i = Lbound(oldCopy) To Ubound(oldCopy) '循環(huán)賦值

newCopy(i) = oldCopy(i)

Next

End Sub

一個(gè)更有效的簡(jiǎn)單的方法就是直接將一個(gè)數(shù)組賦給另外一個(gè)數(shù)組:

Sub ByteCopy(oldCopy() As Byte, newCopy() As Byte)

‘參數(shù)oldCopy()是源數(shù)組,newCopy()是目標(biāo)數(shù)組

newCopy = oldCopy '利用數(shù)組直接進(jìn)行賦值

End Sub

關(guān)于變量賦值有一些規(guī)則需要銘記。例如,雖然可以將一個(gè)聲明為整型的變量賦給一個(gè)聲明為長(zhǎng)整型的變量而不會(huì)產(chǎn)生任何問題,但是將一個(gè)長(zhǎng)整型變量賦給一個(gè)整型變量就很容易導(dǎo)致溢出錯(cuò)誤。除了遵守有關(guān)數(shù)據(jù)類型變量之間賦值時(shí)的規(guī)則外,數(shù)組賦值還要遵從另外一些規(guī)則,包括數(shù)組維數(shù),每一維的大小,以及數(shù)組是固定的還是動(dòng)態(tài)的。

①維數(shù)、數(shù)據(jù)類型不同的數(shù)組賦值考慮的幾個(gè)因素

1、 賦值符左邊的數(shù)組類型:固定數(shù)組 (Dim x(1 to 10) As Integer) 或者動(dòng)態(tài)數(shù)組 (Dim x() As Integer)。

2、賦值符左邊數(shù)組的維數(shù)是否和賦值符右邊數(shù)組的維數(shù)匹配。

3、 賦值符兩邊數(shù)組的每一維的數(shù)組元素個(gè)數(shù)是否匹配。即使數(shù)組的聲明不同,維數(shù)也可能匹配。比如一個(gè)數(shù)組的每一維元素從 0 開始編號(hào)而另一個(gè)則從 1 開始,維數(shù)也可能匹配。

4、 賦值符兩邊所有元素的數(shù)據(jù)類型必須是相容的。這些規(guī)則和變量賦值的規(guī)則是一致的。

數(shù)組賦值時(shí)的錯(cuò)誤可能發(fā)生在編譯時(shí),也可能發(fā)生在運(yùn)行時(shí)(例如,如果數(shù)據(jù)類型不能強(qiáng)制轉(zhuǎn)換或賦值試圖重新聲明 (ReDim) 一個(gè)靜態(tài)數(shù)組)。設(shè)計(jì)程序時(shí)要添加錯(cuò)誤處理以確保數(shù)組在賦值之前是匹配的。

②編寫返回?cái)?shù)組的函數(shù)

從一個(gè)函數(shù)返回一組值是可能實(shí)現(xiàn)的。例如,從一個(gè)函數(shù)返回一組字節(jié)而不必將其先轉(zhuǎn)換為一個(gè)字符串然后再轉(zhuǎn)換回來。

下面是一個(gè)使用返回字節(jié)數(shù)組的函數(shù)的簡(jiǎn)單示例:

Private Sub Form_Load()

Dim b As Byte

Dim i As Integer

Dim ReturnArray() As Byte

b = Cbyte(54)

ReturnArray() = ArrayFunction(b) '調(diào)用函數(shù)

For i = Lbound(ReturnArray) To Ubound(ReturnArray)

Msgbox ReturnArray(i)  '通過彈出消息框循環(huán)顯示數(shù)組值 

Next

End Sub



Public Function ArrayFunction(b As Byte) As Byte()

Dim x(2) As Byte

x(0) = b

x(1) = b + CByte(200)

x(2) = b + b

ArrayFunction = x '返回結(jié)果為數(shù)組x

End Function 

在運(yùn)行以上示例后, ReturnArray() 是一個(gè)三元素?cái)?shù)組,其中包含了分配給 ArrayFunction 中數(shù)組的值。ArrayFunction 語(yǔ)句將一個(gè)數(shù)組作為參數(shù)傳遞;且數(shù)組的數(shù)據(jù)類型必須和函數(shù)的數(shù)據(jù)類型相同(在本例中是字節(jié))。因?yàn)檫@是一個(gè)函數(shù)調(diào)用,傳遞數(shù)組時(shí)不必帶括號(hào)。

注意:

1、盡管可以通過賦值給另一個(gè)數(shù)組(ArrayFunction = x())來返回一個(gè)數(shù)組,但出于性能方面的考慮,并不推薦使用這種方法。

2、必須為返回?cái)?shù)組的函數(shù)指定一個(gè)類型,這個(gè)類型可以是 Variant。這樣一來,F(xiàn)unction X() As Variant() 是有效的而 Function X() As () 將失敗。

3、當(dāng)調(diào)用一個(gè)返回?cái)?shù)組的函數(shù)時(shí),用來保存返回值的變量也必須是一個(gè)數(shù)組,而且其數(shù)據(jù)類型必須和函數(shù)返回類型相同,否則將顯示一個(gè)“類型不匹配”的錯(cuò)誤。

以上就是小編和大家分享的ASP定義數(shù)組的方法,感興趣的小伙伴們可以來參考一下

您可能感興趣的文章:
  • asp取得數(shù)組中的最大值的方法
  • asp下使用數(shù)組存放數(shù)據(jù)的代碼
  • asp 得到動(dòng)態(tài)數(shù)組中元素的個(gè)數(shù)
  • asp.net 數(shù)組中字符串替換的幾種方式
  • asp 動(dòng)態(tài)數(shù)組 提供Add、Insert、Remove、RemoveAt、Search等方法。
  • asp.net 字符串、二進(jìn)制、編碼數(shù)組轉(zhuǎn)換函數(shù)
  • asp.net通過js實(shí)現(xiàn)Cookie創(chuàng)建以及清除Cookie數(shù)組的代碼
  • asp textarea 多行數(shù)組分割處理方法
  • asp 數(shù)組 重復(fù)刪除函數(shù)(腳本之家增強(qiáng)版)
  • ASP 過濾數(shù)組重復(fù)數(shù)據(jù)函數(shù)(加強(qiáng)版)
  • ASP 使用Filter函數(shù)來檢索數(shù)組的實(shí)現(xiàn)代碼
  • asp數(shù)組的使用介紹
  • Asp與JS的數(shù)組和字符串下標(biāo)介紹
  • asp中使用redim、preserve創(chuàng)建動(dòng)態(tài)數(shù)組實(shí)例

標(biāo)簽:唐山 攀枝花 佛山 鶴崗 汕頭 撫州 揭陽(yáng) 海南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP定義數(shù)組方法的技巧》,本文關(guān)鍵詞  ASP,定義,數(shù)組,方法,的,技巧,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP定義數(shù)組方法的技巧》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于ASP定義數(shù)組方法的技巧的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    郁南县| 平昌县| 三亚市| 玉林市| 铁岭县| 黑水县| 东明县| 黄骅市| 长丰县| 府谷县| 姚安县| 招远市| 涞源县| 屏东县| 金湖县| 蓝田县| 凤城市| 都安| 四会市| 宜章县| 天长市| 禹州市| 泊头市| 喀喇沁旗| 五原县| 永平县| 嵊州市| 定日县| 大荔县| 科技| 丰都县| 神木县| 洪雅县| 临汾市| 绥阳县| 沅陵县| 印江| 济南市| 平潭县| 沙坪坝区| 永清县|