Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net VB变量类型的转换_Vb.net_Type Conversion - Fatal编程技术网

Vb.net VB变量类型的转换

Vb.net VB变量类型的转换,vb.net,type-conversion,Vb.net,Type Conversion,我正在尝试学习如何在变量类型之间进行转换。现在,我正在考虑在Try/Catch中使用一个转换(对于无法转换的值)。有没有一种方法可以让一个值的字符串表示(从文本框中获取),将其转换为测试类型,然后查看它如何转换为循环中的所有其他VB标准类型?如果有一个资源已经这样做了,那就更好了 我可以做到这一点,但代码几乎是重复的,我希望有某种循环来简化和缩短它。首先,VB.net中没有变量类型这样的东西。您可能会混淆对象变量——但这不是一回事 Dim o As Object o = 1 ' integer

我正在尝试学习如何在变量类型之间进行转换。现在,我正在考虑在Try/Catch中使用一个转换(对于无法转换的值)。有没有一种方法可以让一个值的字符串表示(从文本框中获取),将其转换为测试类型,然后查看它如何转换为循环中的所有其他VB标准类型?如果有一个资源已经这样做了,那就更好了


我可以做到这一点,但代码几乎是重复的,我希望有某种循环来简化和缩短它。

首先,VB.net中没有变量类型这样的东西。您可能会混淆对象变量——但这不是一回事

Dim o As Object
o = 1 ' integer
存储在
o
中的类型仍然是
integer
。它是盒装的

Dim i As Integer = CInt(o)
你刚把它打开。它之所以有效,是因为
对象
是类型中最低的,所有其他类型都是从它派生的。因此,它可以“框”任何其他类型

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

Dim port as Integer = Convert.ToInt32(txtPort.Text)
这实际上不是您可以确定文本框中的类型的区域。你真的需要事先知道-你在那里期待什么?您可以使用

Integer.TryParse
Date.TryParse
.....TryParse
.............

但问题是,一些数据可以成功通过多种类型的测试。

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

Dim types() As Type = {GetType(Integer), GetType(Double)}
Dim testType As Type = GetType(Double)
最简单的方法可能是单独测试每个值(尽管您可能希望每个或所有项都有一个try-catch)


通常,转换是因为用户提交文本,代码/应用程序转换为特定的其他类型(int、date等)。通常不需要选择,所以更多的解释和一些示例代码就好了。
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
...