2011-02-25 42 views
2

的Visual Basic 2010(快递)。我可以通过例如最好给这个...当是有必要的数据类型转换在Visual Basic 2010

如果我从一个文本字符串,并将其分配给整型变量,我认为你应该使用CINT的内容明确地转换为印象一个整数。

intMyCount = CInt(txtUserInput.Text) 

但是,如果我不这样做,它似乎仍然工作。同样,如果我有一个整数,它连接成一个标签的文本属性,它仍然有效:

lblResults.Text = intMyCount & " number of times." 

,而不是使用intMyCount.ToString.

为什么它的工作? VB在可能的情况下进行隐式转换吗?是否有示例没有显式使用.ToString进行转换或使用CInt会导致意外的结果?

+0

问题显得更漂亮。 – Shoban 2011-02-25 02:57:31

+0

@Shoban - 谢谢。必须越来越累:-) – 2011-02-25 02:58:07

回答

4

这是使用迟绑定完成的,而且很危险,因为如果转换失败(并且有很多情况下第一个示例可能会失败),它会在运行时异常结束。要让编译器执行更安全的转换,请转至Option Strict On

此外,大部分的时间你不希望使用CInt()将字符串转换为int。相反,更喜欢Integer.Parse()Integer.TryParse()。当你格式化你的代码

+0

+1。此外,OP要求举例说明,如果不明确转换可能会导致意外的结果。经典的例子就是你希望根据区域设置来控制字符串的解释。例如。您总是希望将字符串解释为小数点分隔符,而不是考虑PC区域设置。 – MarkJ 2011-02-25 10:48:59

+0

感谢您的解释! – 2011-02-25 14:35:21

+0

是否有一个合理的解释(或逻辑解释)为什么有CInt()和Integer.Parse()?不创建程序时,如果有细微的,但不同的方式做,因为翻译的字符串一些共同的东西,增加错误的概率是多少? – 2011-02-25 14:38:52

1

有些语言轻松处理字符串连接这样的非铸造的字符串。一些还处理非数字类型来进行计算。有些语言根本无法处理它。然而,作为一种最佳做法,我会始终将变量转换为您想避免使用不正确输入类型的问题的类型。