1

次のコードを書きました。

Public Class Form1

Private Structure udtThing
    Dim SomeText As String
    Dim SomeElements() As String
    Public Shared Function CreateInstance() As udtThing
        Dim result As New udtThing
        result.SomeText = String.Empty
        ReDim result.SomeElements(2)
        result.SomeElements(0) = String.Empty
        result.SomeElements(1) = String.Empty
        result.SomeElements(2) = String.Empty
        Return result
    End Function
End Structure

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Dim nThings() As udtThing
    nThings = Array.CreateInstance(GetType(udtThing), 10)

End Sub
End Class

私は部分的に動作し、nThings は 11 個の udtThings の配列になります。ただし、.SomeElements は String.Empty の 3 つの文字列にリダイムされませんが、代わりに「Nothing」です。

誰かが私がどこで間違ったのか見ていますか?

どうもありがとうございました!

4

1 に答える 1

3

設計上、Redim が必要です。Array.CreateInstance() はその操作を実行しません。必要なサイズを推測できません。あなたは助ける必要があります:

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim nThings(10) As udtThing
    For ix As Integer = 0 To UBound(nThings)
        nThings(ix) = udtThing.CreateInstance()
    Next
End Sub
于 2012-12-22T18:17:46.510 に答える