csharp int.ParseとConvert.ToInt32の违い

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp int.ParseとConvert.ToInt32の违い相关的知识,希望对你有一定的参考价值。

namespace DifferenceParseAndConvert
{
  using System;

  class Program
  {
    static void Main()
    {
      //
      // ParseメソッドとConvert.ToXXXメソッドの僅かな違い
      //
      // Parseメソッド、つまり、int.Parseなどのメソッドは
      // 解析できない値、つまり、nullを設定すると例外が発生する。
      //
      // しかし、Convert.ToXXXメソッドはnullを渡しても例外とはならず、処理される。
      //
      // ただし、どちらの方法でも空文字を指定すると例外が発生する (FormatException)
      //
      string numberString = "123";
      string nullString   = null;
      string emptyString  = string.Empty;

      //
      // int.Parseメソッド
      //
      Console.WriteLine("【****** int.Parse ******】");
      // 普通の数値文字列は成功
      Console.WriteLine(int.Parse(numberString));
      try
      {
        // nullを渡すと当然エラー
        Console.WriteLine(int.Parse(nullString));
      }
      catch (ArgumentNullException nullEx)
      {
        Console.WriteLine("int.Parse(null) ==> 例外発生, {0}", nullEx.Message);
      }

      try
      {
        // 空文字でもエラー
        Console.WriteLine(int.Parse(emptyString));
      }
      catch (FormatException formatEx)
      {
        Console.WriteLine("int.Parse('') ==> 例外発生, {0}", formatEx.Message);
      }
      
      //
      // Convert.ToInt32メソッド
      //
      Console.WriteLine("\n【****** Convert.ToInt32 ******】");

      // 普通の数値文字列は成功
      Console.WriteLine(Convert.ToInt32(numberString));
      // nullを渡すとエラーにならず初期値が返る
      Console.WriteLine(Convert.ToInt32(nullString));

      try
      {
        // 空文字を渡すとエラー
        Console.WriteLine(Convert.ToInt32(emptyString));
      }
      catch (FormatException formatEx)
      {
        Console.WriteLine("Convert.ToInt32('') ==> 例外発生, {0}", formatEx.Message);
      }
      
      //
      // おまけ:
      //   int.TryParse
      //
      Console.WriteLine("\n【****** int.TryParse ******】");

      int i1;
      int i2;
      int i3;

      Console.WriteLine(int.TryParse(numberString, out i1));
      Console.WriteLine(int.TryParse(nullString, out i2));
      Console.WriteLine(int.TryParse(emptyString, out i3));

      Console.ReadLine();
    }
  }
}

以上是关于csharp int.ParseとConvert.ToInt32の违い的主要内容,如果未能解决你的问题,请参考以下文章

Convert.ToInt32()和int.Parse()的区别

int.Parse() 和 Convert To.Int32() 的区别? [复制]

asp.net c# int.Parse 或 Convert.toInt [重复]

更好地使用 int.Parse 或 Convert.ToInt32 [重复]

Convert.ToInt16 或 32 或 64 和 Int.Parse 有啥区别? [复制]

int.Parse()int.TryParse()和Convert.ToInt32()的区别