配列のサンプル
投稿者 るきお(管理者)  (社会人)
投稿日時
2012/12/15 12:02:12
こんにちは。
このページのことですね。
http://homepage1.nifty.com/rucio/main/VBdotNet/Samples201/Sample221ArrayCount.htm
私の表現があいまいでした。
「多次元配列の1次元あたりの要素数を取得する例」と銘打っていますが、
2次元配列のイメージを思い浮かべて書いており、
おそらく当時私は次のようなことを考えたと思います。
このコードではcount1は3になりますが、count2は2になります。
つまり、GetLengthを使って『次元ごとの要素の数』を取得するにはcount3のようなRankとの組み合わせが必要です。
count1のようにするかcount3のようにするかはセンスの問題です。
ただ、ここでいう『次元ごとの要素の数』は2次元配列を念頭におくとなんとなくイメージできる気がしますが、
3次元、4次元を考えると結局何の数を指しているのかあいまいになり、このサンプルは混乱を招くだけのように思いました。
そこで、このサンプルは破棄して代わりに「指定した次元にある要素の数を取得する例」に差し替えました。
指摘ありがとうございます。
このページのことですね。
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次元を考えると結局何の数を指しているのかあいまいになり、このサンプルは混乱を招くだけのように思いました。
そこで、このサンプルは破棄して代わりに「指定した次元にある要素の数を取得する例」に差し替えました。
指摘ありがとうございます。
私自身は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()を使うのが適切なのではないでしょうか。
基本的に同じ内容なので、前者が古いままになっているのではないかと推察いたします。
私の勘違いでなければ、修正していただければ幸いです。
なお、この投稿は修正されたら削除していただいても結構です。