そこで、 と の両方をC#
使用して、文字列を Int32 に変換できます。それらの違いは何ですか?どちらがより良いパフォーマンスを発揮しますか? 逆に使用する必要があるシナリオは何ですか?Int32.Parse
Convert.ToInt32
Convert.ToInt32
Int32.Parse
4 に答える
ReflectorまたはILSpyで調べるとmscorlib
、次のコードが表示されます。Convert.ToInt32
public static int ToInt32(string value)
{
if (value == null)
{
return 0;
}
return int.Parse(value, CultureInfo.CurrentCulture);
}
したがって、内部的にはint.Parseを使用しますが、CurrentCulture
. 実際、コードから理解できるのはnull
、パラメーターのように指定すると、このメソッドが例外をスローしない理由です。
基本的Convert.ToInt32
には舞台裏で「Int32.Parse」を使用しますが、一番下の行で
Convert.ToInt32
Anull
は 0 を返します。while ではInt32.Parse
例外が発生します。
Int32.Parse (string s) メソッドは、数値の文字列表現を 32 ビットの符号付き整数に変換します。s が null 参照の場合、ArgumentNullException がスローされます。
一方
Convert.ToInt32(string s) メソッドは、指定された文字列表現を同等の 32 ビット符号付き整数に変換します。これは順番に Int32.Parse () メソッドを呼び出します。s が null 参照の場合、ArgumentNullException をスローするのではなく、0 を返します。
Convert.ToInt32 (文字列値)
MSDN から:
value の値に相当する 32 ビットの符号付き整数を返します。- または - 値が null 参照の場合はゼロ (Visual Basic では Nothing)。戻り値は、value でメソッドを呼び出した結果Int32.Parse
です。