2013-04-09 12 views
9

C#には、Int32.ParseConvert.ToInt32の両方を使用して文字列をInt32に変換できます。それらの違いは何ですか?どちらが良いですか? Convert.ToInt32Int32.Parse以上に使用するシナリオは何ですか?その逆もあります。基本的にはConvert.ToInt32とInt32.Parseの違いは何ですか?

+3

@vanneto:質問は重複しているかもしれませんが、答えはありません。 – th1rdey3

答えて

8

Convert.ToInt32Int32.Parseに例外が発生しますながらnullは0を返します。舞台裏「でInt32.Parse」を使用しますが、一番下の行に Convert.ToInt32

2

Convert.ToInt32(文字列値)MSDNから

は:

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

2

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

Convert.ToInt32(文字列s)メソッドに対し

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

18

あなたはmscorlibあなたがConvert.ToInt32

public static int ToInt32(string value) 
{ 
    if (value == null) 
    { 
     return 0; 
    } 
    return int.Parse(value, CultureInfo.CurrentCulture); 
} 

ために、次のコードが表示されますので、内部的にはint.Parseを使用するにはなくCurrentCultureReflectorまたはILSpyで見れば。 実際にコードからわかるように、nullをパラメータのように指定すると、このメソッドは例外をスローしません。