5

私は「ばかげた」問題に直面しました。
文字列を int16 に変換しようとしていました (int32/integer ではなく int16 で行う必要があります)。
私の最初の考えは、試してみることでした:

convertedVal = Convert.ToInt16(newVal)

例外がスローされました:値が UInt16 に対して大きすぎるか小さすぎます。
しかし、私の文字列は「10」だったので、minValue と maxValue の間にありました。
を使用して問題を解決しました:

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

問題は解決しましたが、何が間違っていたのかわかりません。
誰かがなぜこれが起こったのか説明してもらえますか?

御時間ありがとうございます

4

3 に答える 3

5

これは通常、文字列に余分なスペースがある場合に発生しますTrim

convertedVal = Convert.ToInt16(newVal.Trim())
于 2012-11-01T11:12:15.573 に答える
2

MSDNページによると、両方の方法は同じである必要があります

メソッドを使用することは、ToInt16(String)メソッドに値を渡すことと同じInt16.Parse(String)です。値は、現在のスレッド カルチャの書式設定規則を使用して解釈されます。

于 2012-11-01T11:23:18.300 に答える
1

この文字列はどこで入手できますか?
それがユーザー入力によるものである場合、Convert または Parse メソッドを使用するために正しい int16 値を入力することをあまり信用しません。

TryParse を使用すると、より堅牢なコードが得られます。

Dim result as Short
Dim newVal as String = "10 sadaas"
if Int16.TryParse(newVal, result) = False then
    result = 0
end if
于 2012-11-01T11:26:09.877 に答える