あいかわらずのオヤジでごめんなさいorz
さて、あうがすとな葉月となりましたが……本来ならOctoberだったのに、あうぐすちぬすちゃんったら<違っ
というわけで、配列
Dim Hoge() as string
についてのお話。
VB4脳では、
Dim Hoge() As String
redim Hoge(1 to 10)
Hoge(1) = "1"
でも良かった。が、VS2005、VB.NETさんでは
エラー 7 配列の下限に指定できるのは '0' のみです。
なんて叱られる。なので
Dim Hoge() As String
ReDim Hoge(10)
Hoge(1) = "1"
としてみると大丈夫
さて、ここで、配列Hogeの要素を変えたい、とする。VB4脳は
ReDim Hoge(0 to 8)
ReDim Hoge(1 to 101)
とかできる。でもこうすると初期化されるのでHoge(1)の"1"が消えちゃう。
ReDim Preserve Hoge(0 to 8)
ReDim Preserve Hoge(1 to 101)
なんてしてみる。すると、Hoge(1)="1" のまま。つまり、ReDimという命令によって、配列の再確保、初期化、インデックスの再設定までこなしちゃってたわけです。
さて、同じ動きを.Net FreameworkのArrayクラスで考えると、
Array.Resize(Hoge,8)
Array.Resize(Hoge,100)
という命令で、ReDim Preserve と同じ動きになります。ただの初期化をしたい場合には、この後で
Hoge.Initialize
とすると初期化されます。ちと、メンドイね。でも、その代わりと言っては何ですが、便利な関数が使えます。
Array.Length(全次元の要素数の合計)
Array.GetLength(指定次元の要素数)
Array.Copy (要素のコピー、失敗しても途中までのデータを保証)
Array.ConstrainedCopy (要素のコピー、失敗するとデータは入らない)
Array.IndexOf(指定次元を指定値で最初から検索して見つかったインデックスを返す)
Array.LastIndexOf(指定次元を指定値で最後から検索して見つかったインデックスを返す)
Array.Reverse(配列要素を反転)
Array.Sort(配列要素をソート)
他にも色々あるけれど……ま、ちと抜粋で(笑)
VB4の時代、みーんなみーんな、common.bas とかファイル作って、そこに作ってたものだったね(遠い目)どうやったら実現できるかと頭ひねった時代、VB4、何もかもが懐かしい……
でも、だからって、.NETが嫌いなわけじゃなくて、いつも思うように、「便利が増えたねぇ」としみじみしてしまうの。