VB变量类型的转换

时间:2015-07-08 14:22:23

标签: vb.net type-conversion

我正在尝试学习变量类型之间的转换如何工作。现在,我正在寻找在Try / Catch中使用一个转换(对于无法转换的值)。有没有办法获得一个值的字符串表示(从TextBox获得),将其转换为测试类型,然后看看如何转换为循环中的所有其他VB标准类型?如果有资源已经做到这一点,甚至会更好。

我可以这样做,但代码非常接近重复,我希望有一种循环来简化和缩短它。

2 个答案:

答案 0 :(得分:0)

首先,VB.net中没有variable type这样的东西。可能让你与object variables混淆 - 但这不是一回事

Dim o As Object
o = 1 ' integer

o中存储的类型仍为integer。盒装。

Dim i As Integer = CInt(o)

你刚刚取消了它。它的工作原理是object类型最少而其他所有类型都来自它。因此,它可以“装箱”任何其他类型。

在UI中,我们使用文本框来收集数据。文本框只能包含字符串。除非您将这些字符串写入txtxml这样的文件,否则通常需要将这些字符串转换为您在应用程序中使用的类型。

Dim port as Integer = Convert.ToInt32(txtPort.Text)

这不是您可以确定的区域,该文本框中的类型。你真的需要提前知道 - 你在那里期待什么?您可以使用

测试文本是否属于某种类型
Integer.TryParse
Date.TryParse
.....TryParse
.............

但问题是,有些数据可以成功地将此测试从多种类型传递出来。

答案 1 :(得分:0)

好问题。虽然可以声明类型为type的变量并在循环中使用它们,但这些变量不能用于声明或DirectCast。

Dim types() As Type = {GetType(Integer), GetType(Double)}
Dim testType As Type = GetType(Double)

最简单的方法可能是单独测试每个值(尽管你可能想要为每个或所有项目尝试一次)。

Dim xInteger As Integer
xInteger = TextBox1.Text
s &= "Integer: " & xInteger.ToString & vbcrlf ' or some test

Dim xDouble As Double
xDouble = TextBox1.Text
s &= "Double" & ": " & xDouble.ToString & vbcrlf
...