将String转换为int16

时间:2012-11-01 11:09:07

标签: vb.net type-conversion

我遇到了一个“荒谬”的问题 我试图将字符串转换为int16(我被迫在int16中执行,而不是在int32 / integer中)。
我的第一个想法是尝试:

convertedVal = Convert.ToInt16(newVal)
抛出异常的

对于UInt16,值太大或太小。
但是我的字符串是“10”,所以它在minValue和maxValue之间 我用以下方法解决了我的问题:

convertedVal = Int16.Parse(newVal) 'TryParse works also

虽然我解决了我的问题但我不明白我做错了什么 有人可以向我解释为什么会这样吗?

感谢您的时间

3 个答案:

答案 0 :(得分:3)

如果字符串上有额外的空格,通常会发生这种情况,因此更好Trim

convertedVal = Convert.ToInt16(newVal.Trim())

答案 1 :(得分:2)

根据the MSDN page

,两种方法都应该相同
  

使用ToInt16(String)方法相当于将值传递给Int16.Parse(String)方法。通过使用当前线程文化的格式约定来解释值。

答案 2 :(得分:1)

你在哪里得到这个字符串?
如果它来自用户输入,我不会太信任他/她键入正确的int16值来使用Convert或Parse方法。

使用TryParse会产生更强大的代码。

Dim result as Short
Dim newVal as String = "10 sadaas"
if Int16.TryParse(newVal, result) = False then
    result = 0
end if