0

こんにちは私は以下のコードを持っています:

Dim ColMap As Integer = Val(Microsoft.VisualBasic.Left(dr("MappedTo").ToString(), 3))  
Dim ValorLeido As String  

ValorLeido = temp(dr("NoColumn").ToString())  

Select Case ColMap  
      Case 101  
         _101 = ValorLeido  
      Case 102  
         _102 = ValorLeido  
      Case 103  
         _103 = ValorLeido  
End Select  

me("_" & ColMap) = ValorLeido のようなものを使用できる方法はありますか??

4

2 に答える 2

0

Dictionary など、一連の ID を一連の値に保持するための記憶媒体を使用してみてください。

Dim ColMap As Integer = Val(Microsoft.VisualBasic.Left(dr("MappedTo").ToString(), 3))  
Dim ValorLeido As String = temp(dr("NoColumn").ToString())  
Dim Lookup as New Generic.Dictionary(of Integer,String)
Lookup(ColMap) = ValorLeido

' 1 way of Reading values out of a dictionary safely
Dim Value as string
Value=""

if lookup.trygetvalue("101",value) then
    msgbox("Value for 101 is """ & value & """")
else
    msgbox("Value for 101 is not found)
end if

この構造がすでに存在する場合は、単一のインデックス付きプロパティを介してアクセスすることもできます

public property Value(Index as integer) as string
    get
         select case index
             case 101
                  return _101
             case 102
                  return _102
             case 103
                  return _103
             case else
                  Throw new exception("Index not present " & index)
    end get
    set (value as string)
        ' populate with reverse process ...
    end set
end property
于 2013-06-06T00:34:07.293 に答える
0

CallByName()を示す簡単な例を次に示します。ターゲット変数がPublicであることに注意してください。

Public Class Form1

    Public _101 As String
    Public _102 As String = "{Default Value}"
    Public _103 As String

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Debug.Print("Before: _102 = " & _102)

        Dim ColMap As Integer = 102
        Dim ValorLeido As String = "Hello World!"

        Dim varName As String = "_" & ColMap
        CallByName(Me, varName, CallType.Let, ValorLeido)

        Debug.Print("After: _102 = " & _102)
    End Sub

End Class

そして、ターゲット変数をPrivateにすることを許可するReflectionを介した同じことは次のとおりです。

Imports System.Reflection
Public Class Form1

    Private _101 As String
    Private _102 As String = "{Default Value}"
    Private _103 As String

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Debug.Print("Before: _102 = " & _102)

        Dim ColMap As Integer = 102
        Dim ValorLeido As String = "Hello World!"

        Dim varName As String = "_" & ColMap
        Dim fi As FieldInfo = Me.GetType.GetField(varName, Reflection.BindingFlags.Public Or Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
        fi.SetValue(Me, ValorLeido)

        Debug.Print("After: _102 = " & _102)
    End Sub

End Class
于 2013-06-06T00:23:42.737 に答える