Private Structure test
Dim a As Integer
Dim b As String
Dim c as String
End Structure
Dim a() As test = New test(2) {}
Dim b() As test = New test(2) {}
Dim c()() As test
c = New test()() {a, b}
Dim temp() as integer
cは多段階配列で、
例えば、c(0)のメンバaのデータをすべて取り出したい
時はどうすればよろしいのでしょうか?
//気持ち的にはこのようにしたいのですが、
できません。
temp = c(0).a
どなたか、わかるかた、教えてください。
よろしくお願いします。
#1 Wizard_Zeroです。連投失礼します。
Array.ConvertAllを使えばもう少しスマートになりました。
ConvertAllで使用するSystem.Converterデリゲートのメソッドを次のように定義しておきます。
Private Function Converter(ByVal value As test) As Integer
Return value.a
End Function
あとは、Array.ConvertAllを使ってtest配列をInteger配列に変換すればOK。
Dim c()() As test
c = New test()() {a, b}
Dim temp() As Integer = Array.ConvertAll(Of test, Integer)(c(0), AddressOf Converter)
' 確認用
For Each intEnum As Integer In temp
Call Console.WriteLine(intEnum)
Next
> 気持ち的にはこのようにしたいのですが
> temp = c(0).a
わかりますわかります。。。
でも、やっぱり配列をまわして順番に取り出すしかないと思います。
Integer() = test().a
になっているので、これでは変換できませんからね・・・。
Dim c()() As test
c = New test()() {a, b}
Dim temp() As Integer = {}
Call Array.Resize(temp, c(0).Length)
For index As Integer = 0 To c(0).GetUpperBound(0)
temp(index) = c(0)(index).a
Next
' 確認用
For Each intEnum As Integer In temp
Call Console.WriteLine(intEnum)
Next
お礼
なるほど~ すごいですね~~。 スマートです^^