ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

C# - string 型と int 型の相互変換

初めに

 C# における string 型から int 型への変換に使う int.Parse()、int.TryParse() と int 型から string 型への変換に使う Object.ToString() の使い方をまとめます。

string から int への変換

int.Parse()

 int.Parse() は文字列を整数型の値に変換する関数です。

public static int Parse (string s);

(例)

using System;

class Program
{
    static void Main()
    {
        string numberString = "123";

        //string型の"123"からint型の123に変換
        int number = int.Parse(numberString);
        Console.WriteLine(number);  //123
    }
}

 "123a" のように文字列が整数値を表していない場合、FormatException(引数の形式が正しくない場合にスローされる例外)がスローされるため、引数が整数の形であることを確認する必要があります。

int.TryParse()

 int.TryParse() は文字列を整数型の値に変換する際に、変換の成功や失敗を bool 値で取得できる関数です。

 変換に成功した場合、trueを返し、out パラメータで指定した変数に整数を代入します。変換に失敗した場合は false を返します。変換に失敗した場合、outパラメータで指定した変数にはデフォルト値が設定されます。

public static bool TryParse (string? s, IFormatProvider? provider, out int result);
public static bool TryParse (string? s, out int result);

(例)

using System;

class Program
{
    static void Main()
    {
        string numberString = "123";
        int number;

        //numberStringをint型に変換しようとする
        //成功した場合はtrueを返し, numberに変換された数値をnumberに代入する
        bool success = int.TryParse(numberString, out number);

        if (success)  //今回はsuccessがtrue
        {
            Console.WriteLine("変換成功: " + number);  //変換成功: 123
        }
        else
        {
            Console.WriteLine("変換失敗");
        }
    }
}

int から string への変換

Object.ToString()

 Object.ToString() は現在のオブジェクトを表す文字列を返します。

 すべてのクラスはObjectクラスを継承しているため、ToString()メソッドは int 型に限らず、どのオブジェクトでも利用可能です。

public virtual string? ToString ();

(例)

using System;

class Program
{
    static void Main()
    {
        int number = 123;

        //123からstring型の"123"に変換
        string numberString = number.ToString();

        Console.WriteLine(numberString);  //123

        //double型からstring型への変換
        double pi = 3.141592653589793;
        string piString = pi.ToString();

        //DateTime型からstring型への変換
        DateTime now = DateTime.Now;
        string nowString = now.ToString();
    }
}