11

そこで、 と の両方をC#使用して、文字列を Int32 に変換できます。それらの違いは何ですか?どちらがより良いパフォーマンスを発揮しますか? 逆に使用する必要があるシナリオは何ですか?Int32.ParseConvert.ToInt32Convert.ToInt32Int32.Parse

4

4 に答える 4

17

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、パラメーターのように指定すると、このメソッドが例外をスローしない理由です。

于 2013-04-09T06:46:58.567 に答える
7

基本的Convert.ToInt32には舞台裏で「Int32.Parse」を使用しますが、一番下の行で Convert.ToInt32Anullは 0 を返します。while ではInt32.Parse例外が発生します。

于 2013-04-09T06:42:09.407 に答える
3

Int32.Parse (string s) メソッドは、数値の文字列表現を 32 ビットの符号付き整数に変換します。s が null 参照の場合、ArgumentNullException がスローされます。

一方

Convert.ToInt32(string s) メソッドは、指定された文字列表現を同等の 32 ビット符号付き整数に変換します。これは順番に Int32.Parse () メソッドを呼び出します。s が null 参照の場合、ArgumentNullException をスローするのではなく、0 を返します。

于 2013-04-09T06:42:59.080 に答える
2

Convert.ToInt32 (文字列値)

MSDN から:

value の値に相当する 32 ビットの符号付き整数を返します。- または - 値が null 参照の場合はゼロ (Visual Basic では Nothing)。戻り値は、value でメソッドを呼び出した結果Int32.Parseです。

于 2013-04-09T06:42:25.173 に答える