我遇到了一个“荒谬”的问题
我试图将字符串转换为int16(我被迫在int16中执行,而不是在int32 / integer中)。
我的第一个想法是尝试:
convertedVal = Convert.ToInt16(newVal)
抛出异常的:对于UInt16,值太大或太小。
但是我的字符串是“10”,所以它在minValue和maxValue之间
我用以下方法解决了我的问题:
convertedVal = Int16.Parse(newVal) 'TryParse works also
虽然我解决了我的问题但我不明白我做错了什么 有人可以向我解释为什么会这样吗?
感谢您的时间
答案 0 :(得分:3)
如果字符串上有额外的空格,通常会发生这种情况,因此更好Trim
convertedVal = Convert.ToInt16(newVal.Trim())
答案 1 :(得分:2)
使用
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