VB初心者です。
下記の2次元配列の次元の要素数を取得したいのですが、関数はあるのでしょうか?(単純にlengthだと6が返ってくるし、Rankだと2が返ってきます。3が返されるようにするにはどうしたらよいのでしょうか?)
Dim test(,) As String = {{"てすと", "1"},{"テスト", "2"},{"手巣都", "3"}}
GetLength に知りたい次元を引数で渡してください。
編集 削除ヘルプさん回答ありがとうございます。
ですがGetLengthだと特定次元の要素数しか返ってきません。
知りたいのは配列の中の配列の要素数ではなく、配列の要素数です。
「次元の要素数を取得したい」んですから、「特定次元の要素数」が返ってくるのは全く要求どおりだと思うのですが。
編集 削除すみませんでした。
実現方法を教えていただけませんでしょうか?
>ですがGetLengthだと特定次元の要素数しか返ってきません。
そのまま使ったので問題ありません。
ヘルプ様
>そのまま使ったので問題ありません。
申し訳ありませんが、どのような意味でしょうか?
GetLengthだと特定次元の要素数が返ってきたのでしょう?
それが答えなのですから、そのまま使ってください。
1で記載したように
>3が返されるようにするにはどうしたらよいのでしょうか?
の回答がGetLengthでは満たせません。
それとも本当にGetLengthで満たしているのでしょうか?
どのように確認して、どのような結果が出たのを満たさないと言っていますか?
編集 削除>1で記載したように
1ってのは最初のスレッドのこと?質問文には length と Rank
の結果しか書いてないですが GetLength の結果は?
test.GetLength(0)の結果、2が返ってきます。
求めようとしているものが違うんです。
ex) 値1 値2
配列1 てすと 1
配列2 テスト 2
配列3 手巣都 3
何列あるかじゃなくて何行あるかを求めたいんですよ。だから結果が3にならないと意味がないんです。
残念ながらこちらでは 3 が返ってきます。
自分のコードに間違いが無いか確認してください。
Dim test(,) As String = {{"てすと", "1"}, {"テスト", "2"}, {"手巣都", "3"}}
Debug.WriteLine(test.GetLength(0))
Debug.WriteLine(test.GetLength(1))
[出力]
>3
>2
大変失礼しました。
ご指摘通りコードが間違っていました。
http://msdn.microsoft.com/ja-jp/library/system.array.getlength(VS.80).aspx
下の方に記述がありました。