一,、使用safeArray數(shù)組 我很驚訝jose為什么要提供vb數(shù)組safeArray,,而且他對提供vb數(shù)組走了極端,分別提供了極其精簡只限wstring類型的CwstrArray,,和全功能的variant類型的CvariantArray,。但想一想,也許這樣子也有一定的好處,,在多線程的模式下,,還有比safeArray數(shù)組更好的數(shù)組嗎?畢竟這是線程安全的,,而且又易于使用,。 提供CwstrArray字符串數(shù)組,是因為spit函數(shù),,必須有一個字符串數(shù)組來接收spit分割后字符串,。不過在某些情況下,我們也是可以直接使用CwstrArray數(shù)組,。如果要有VB交互的話,,可以使用CvariantArray數(shù)組,但如果純粹在FB下使用,,沒必要使用Variant和variant數(shù)組,,那是在找虐。 cWstrArray數(shù)組和vb中使用數(shù)組還是有細微的差別,。 (1),、vb中dim arr(4) as string,其中4表示數(shù)組的ubound是4,,這樣的數(shù)組其實是5個元素,。 但CwstrArray(4)表示這個數(shù)組是4個元素,它的Ubound是3 (2) vb可以直接使用 arr(0)="這是一個測試",,但cwstrArray.item(0)="這是一個測試",,這個item無法省略 (3)在單線程模式下,不必擔心數(shù)組是不是會lock,,但在多線程模式下,,你要注意數(shù)組加解鎖問題,,也就是accessData和UaccessData這兩個方法最好是明確使用。 (4)字符串聯(lián)接用+號,,盡量不使用&,,如果&號,你得注意是&**CwstrArray.item(0),,2個*號,,這個同樣適用于Cwstr類中,使用&聯(lián)接號必須使用 &**cwstr,,使用+號沒有任何問題,,原因是因為&符號得先強制轉換數(shù)據(jù)類型,先cast(),,再進行拼接,。 (5)vb中獲得數(shù)組元素的數(shù)量,是ubound(Arr)-Lbound(Arr),,但CwstrArray使用是CwstrArray.count直接返回元素數(shù)量 (6)cWstrArray數(shù)組中可以復制數(shù)組,,可以嵌套數(shù)組,可以使用variant中的數(shù)組vt_Array(僅限于字符串類型數(shù)組) #include once "afx/cwstrArray.inc" #include once "afx/cwindow.inc" dim myArr as cwstrArray=cwstrArray(4) myArr.item(0)="1" myArr.item(1)="2" myArr.item(2)="3" myArr.item(3)="4" myarr.sort(false) 'false是降序,,默認是true是升序 'afxmsg "one = " & myarr.item(0) & "two= " & myArr.item(1) & "Three= " & myArr.item(2) & "four=" & myArr.item(3) afxmsg "one = " + myarr.item(0) + "two= " + myArr.item(1) + "Three= " + myArr.item(2) + "four=" + myArr.item(3) 二,、使用字典dictionary afx庫中也分別提供了wstring類型的dictionary和variant類型的dictionary。用法和VB中使用dictionary幾乎一樣,。 cwstrDic類比vb的dictionary多了一個count方法,,返回一個字典元素的數(shù)量。 說實話,,我對afx庫只提供dictionary,,其實是非常失望的。一般最好使用mdtypes這個泛型的集合類庫,。 |
|
來自: nxhujiee > 《◆VisualFreeBasic》