将字符串转换为 int16

Nia*_*ios 5 vb.net type-conversion

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

convertedVal = Convert.ToInt16(newVal)
Run Code Online (Sandbox Code Playgroud)

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

convertedVal = Int16.Parse(newVal) 'TryParse works also
Run Code Online (Sandbox Code Playgroud)

虽然我解决了我的问题,但我不明白我做错了什么。
有人可以向我解释为什么会发生这种情况吗?

谢谢你的时间

Joh*_*Woo 5

这通常发生,如果有对字符串的额外的空间,所以最好Trim

convertedVal = Convert.ToInt16(newVal.Trim())
Run Code Online (Sandbox Code Playgroud)