- 題名: 動的に多段階配列を作成するには?
- 日時: 2006/08/16 11:41:30
- ID: 17130
- この記事の返信元:
- (なし)
- この記事への返信:
- [17132] Re[1]: 動的に多段階配列を作成するには?2006/08/16 15:43:15
- ツリーを表示
やりたいことがいまいちよくわからないのですが
たとえばこんな感じですか?
Dim a()() As String
a = New String(3)() {}
a(0) = New String() {"a", "b"}
a(1) = New String() {"c"}
a(2) = New String() {"d", "e", "f"}
For i As Integer = 0 To 3
If a(i) Is Nothing Then
Console.WriteLine("a({0}) is Nothing.", i)
Else
For j As Integer = a(i).GetLowerBound(0) To a(i).GetUpperBound(0)
Console.WriteLine("a({0})({1}) = {2}", i, j, a(i)(j))
Next
End If
Next
実行結果
a(0)(0) = a
a(0)(1) = b
a(1)(0) = c
a(2)(0) = d
a(2)(1) = e
a(2)(2) = f
a(3) is Nothing.
■No17133に返信(ガチャピンさんの記事)
> 回答ありがとうございます。
> 説明不足で申し訳ありません。
> でも下記のやり方だと動的ではないと思いますが...
実行時に要素数を指定して領域を確保しているという点で十分「動的」だとおもいますが、
ガチャピンさんの書いた図とガチャピンさんのいう「動的」の意味が
わからなかったのでこういう意味ですか?と質問したのです。
もし単に要素数や代入している中身がリテラルなのが気に入らないというだけの
意味であれば、
例では実際に動くコードを簡単に書くためにリテラルで3とかいてますが
それは当然mでもnでもよいわけです。
親配列の要素である子配列も説明を簡単にするためリテラルを代入していますが
当然要素数を変数で指定して中身はなんらかのロジックにより代入しても当然かまいません。
たとえば親配列の要素a(x)のString配列の要素数がGetArraySize(x)、
a(x)(y)に代入する文字列がGetArrayItemString(x,y)で得られるとすると
下のように書いてもよいわけですよね。
Dim a()() As String
a = New String(n)() {}
For i As Integer = 0 To n
a(i) = New String(GetArraySize(i)) {}
For j As Integer = a(i).GetLowerBound(0) To a(i).GetUpperBound(0)
a(i)(j) = GetArrayItemString(i,j)
Next
Next
分類:[ASP.NET]
お世話になります。
下記のような配列Aを動的に作成したいと思っています。
配列A
----- ---
1 → A
----- ---
2 B
----- ---
3 C
----- ---
D
---
E
---
:
現在は下記のURL(3-3-6 多段階配列)を参考にしながら記述していますがうまくいきません。
どうが、ご存知な方がいましたらご教授宜しくお願いします。
http://www.microsoft.com/japan/msdn/net/vbnetref/vbnetref3-3.aspx
Dim aryValue()() As String
aryValue = New String(n)() {}
aryValue(n) = New String() {値}
※nはその時によって変わります。
では、失礼します。