簡體   English   中英

VB ReDim的成員字段以編程方式

[英]VB ReDim of member field programmatically

我試圖基於讀取文件來重新定義成員數組。 我不知道該怎么做。 這是我嘗試過的方法,但是不起作用。

Public Class BS
    Public A() As String
    Public B() As Double
    Public C() As Double
End Class

Public Class SB

    Public MyBS() As BS

    'ReadFieldString is a function that returns a string of the field name of Class BS,
    'i.e., A, B or C.  For test purpose, retun a constant
    Public Function ReadFieldString() As String
        Return "B"
    End Function

    'GetArrayDim is a function that returns an integer, which is the size of the array
    'of that field name. For test purpose, retun a constant
    Public Function GetArrayDim() As Integer
        Return 1
    End Function

    Public Sub DimArrays()
        ReDim MyBS(3)
        Dim i As Integer
        For i = 0 To MyBS.Length - 1
            'Try to ReDim the member of MyBS
            ReDim MyBS(i).GetType.GetField(ReadFieldString)(GetArrayDim)
        Next()
    End Sub

End Class

ReDim語句具有錯誤“表達式是一個值,因此不能成為賦值的目標”。 提前致謝。

我不確定ReDim可以那樣工作。 將代碼更改為此將實現我相信的目標:

 Public Sub DimArrays() ReDim MyBS(3) Dim i As Integer For i = 0 To MyBS.Length - 1 MyBS(i) = New BS() Dim f = GetType(BS).GetField(ReadFieldString()) f.SetValue(MyBS(i), Array.CreateInstance(f.FieldType.GetElementType(), GetArrayDim())) Next End Sub 

但是,我認為更好的方法是在BS構造函數中指定數組大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM