配列のサンプル

タグの編集
投稿者 えひめから  (社会人) 投稿日時 2012/12/14 21:24:32
はじめまして。
私自身はVBを使わないのですが、人に教えないといけないときに参考にさせていただいています。
また、ある程度以上になったら、「本を買って読むのもいいけど、ここで勉強すれば」
などと言って、とてもお世話になっています。

そういった使い方で、拝見させていただいているうちに気づいたのですが、
VB.NETのサンプルの「配列の要素の数を取得する」のページ
http://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm
中の「4.多次元配列の1次元あたりの要素数を取得する例」では
Rankを使われていますが、
VB.NETの初級講座の配列の回
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard27.htm
にあるようにGetLength()を使うのが適切なのではないでしょうか。

基本的に同じ内容なので、前者が古いままになっているのではないかと推察いたします。
私の勘違いでなければ、修正していただければ幸いです。

なお、この投稿は修正されたら削除していただいても結構です。
投稿者 るきお(管理者)  (社会人) 投稿日時 2012/12/15 12:02:12
こんにちは。

このページのことですね。
http://homepage1.nifty.com/rucio/main/VBdotNet/Samples201/Sample221ArrayCount.htm

私の表現があいまいでした。
「多次元配列の1次元あたりの要素数を取得する例」と銘打っていますが、
2次元配列のイメージを思い浮かべて書いており、
おそらく当時私は次のようなことを考えたと思います。

  
Dim values(,) As String = {
                    {"アメンボ""イノシシ""ウマ"},
                    {"Apple""Banana""Cat"}
                    }

'3 
Dim count1 = values.Length \ values.Rank

'2 
Dim count2 = values.GetLength(0)

'3 
Dim count3 = values.GetLength(values.Rank - 1)


このコードではcount1は3になりますが、count2は2になります。
つまり、GetLengthを使って『次元ごとの要素の数』を取得するにはcount3のようなRankとの組み合わせが必要です。
count1のようにするかcount3のようにするかはセンスの問題です。

ただ、ここでいう『次元ごとの要素の数』は2次元配列を念頭におくとなんとなくイメージできる気がしますが、
3次元、4次元を考えると結局何の数を指しているのかあいまいになり、このサンプルは混乱を招くだけのように思いました。

そこで、このサンプルは破棄して代わりに「指定した次元にある要素の数を取得する例」に差し替えました。

指摘ありがとうございます。