在VB.NET中进行转换

You*_*sef 14 vb.net casting ctype

我希望能够动态地转换值,只有在运行时才知道类型.像这样的东西:

myvalue = CType(value, "String, Integer or Boolean")
Run Code Online (Sandbox Code Playgroud)

包含类型值的字符串作为参数传递,也从数据库中读取,并将值作为字符串存储在数据库中.

这可能吗?

tom*_*ich 9

 Dim bMyValue As Boolean
 Dim iMyValue As Integer
 Dim sMyValue As String 
 Dim t As Type = myValue.GetType


 Select Case t.Name
     Case "String"
        sMyValue = ctype(myValue, string)
     Case "Boolean"
        bMyValue = ctype(myValue, boolean)
     Case "Integer"
        iMyValue = ctype(myValue, Integer)
 End Select
Run Code Online (Sandbox Code Playgroud)

它有点hacky但它​​的工作原理.


Joe*_*orn 7

当然,但myvalue必须定义为类型Object,你不一定要那样.也许这是仿制药更好的一个案例.

什么决定使用什么类型?


Ini*_*eer 5

这是最简单的方法.我用多种类型测试了它.

Sub DoCast(ByVal something As Object)

    Dim newSomething = Convert.ChangeType(something, something.GetType())

End Sub
Run Code Online (Sandbox Code Playgroud)