0Pricing
C# Academy · レッスン

Convertクラスと解析

ConvertとTryParseで解析と変換を行います。

「Convertクラスと解析」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。

文字列から数値への変換

ユーザー入力はテキストとして受け取ります。それを計算に使うには、文字列を数値に変換する必要があります。C#にはConvert、Parse、TryParseが用意されています。

using System;

class Program
{
    static void Main()
    {
        string input = "42";
        int number = int.Parse(input);
        Console.WriteLine(number + 8);
    }
}

int.Parse

int.Parseは数値を表す文字列をintに変換します。テキストが有効な数値でない場合はFormatExceptionをスローします。

using System;

class Program
{
    static void Main()
    {
        try
        {
            int n = int.Parse("abc");
            Console.WriteLine(n);
        }
        catch (FormatException)
        {
            Console.WriteLine("Not a valid number");
        }
    }
}

int.TryParse

int.TryParseは例外を回避します。成功するとtrueを返して結果をoutパラメーターに格納し、失敗するとfalseを返します。

using System;

class Program
{
    static void Main()
    {
        if (int.TryParse("123", out int n))
            Console.WriteLine("Parsed: " + n);
        else
            Console.WriteLine("Failed");
    }
}

安全な入力には TryParse

TryParseは、信頼できない入力を処理する推奨の方法です。無効なテキストをクラッシュさせず、適切に処理できます。

using System;

class Program
{
    static void Main()
    {
        string[] inputs = { "10", "oops", "30" };
        int total = 0;
        foreach (var s in inputs)
        {
            if (int.TryParse(s, out int v))
                total += v;
        }
        Console.WriteLine("Total of valid: " + total);
    }
}

Convert クラス

Convertクラスは、さまざまな基本型の間で変換を行います。たとえば、Convert.ToInt32、Convert.ToDouble、Convert.ToBooleanなどがあります。

using System;

class Program
{
    static void Main()
    {
        int i = Convert.ToInt32("256");
        double d = Convert.ToDouble("3.14");
        bool b = Convert.ToBoolean("true");
        Console.WriteLine(i + ", " + d + ", " + b);
    }
}

Convert による null の処理

int.Parseとは異なり、Convert.ToInt32(null)は例外をスローせずに 0 を返します。便利な場合もありますが、意外な結果になることもあります。

using System;

class Program
{
    static void Main()
    {
        string s = null;
        int n = Convert.ToInt32(s);   // returns 0
        Console.WriteLine("Result: " + n);
    }
}

数値型間の Convert

Convertは、ある数値型を別の数値型に変換することもできます。浮動小数点値を整数に変換する場合は、切り捨てではなく丸めが行われます。

using System;

class Program
{
    static void Main()
    {
        double d = 7.6;
        int cast = (int)d;             // truncates -> 7
        int converted = Convert.ToInt32(d);   // rounds -> 8
        Console.WriteLine("cast=" + cast + ", convert=" + converted);
    }
}

その他の型の解析

ほとんどの組み込み型には、それぞれのParse/TryParseがあります。たとえば、double.TryParse、bool.TryParse、DateTime.TryParseなどです。

using System;

class Program
{
    static void Main()
    {
        bool okD = double.TryParse("2.5", out double d);
        bool okB = bool.TryParse("True", out bool flag);
        Console.WriteLine(okD + ":" + d + ", " + okB + ":" + flag);
    }
}

逆変換には ToString

数値をテキストに戻すには、ToString()を呼び出します。必要に応じて書式文字列も指定できます。

using System;

class Program
{
    static void Main()
    {
        int n = 255;
        double price = 12.5;
        Console.WriteLine(n.ToString());
        Console.WriteLine(price.ToString("C"));   // currency format
    }
}

適切なツールの選択

信頼できないユーザー入力にはTryParseを使い、入力が必ず有効だと保証できる場合はParseを使います。null の処理や多くの型の間で変換する場合はConvertを使ってください。

using System;

class Program
{
    static void Main()
    {
        string userInput = "55x";
        int value = int.TryParse(userInput, out int v) ? v : -1;
        Console.WriteLine(value == -1 ? "Invalid input" : "Got " + value);
    }
}

まとめ

堅牢な入力処理の流れでは、TryParseで検証し、失敗時には既定値を設定してから、安全に計算を行います。

using System;

class Program
{
    static int ReadAge(string input)
    {
        if (int.TryParse(input, out int age) && age >= 0)
            return age;
        return 0;   // safe default
    }

    static void Main()
    {
        Console.WriteLine("Age: " + ReadAge("28"));
        Console.WriteLine("Age: " + ReadAge("bad"));
    }
}

確認問題

解析と変換についての理解度を確認しましょう。

要点の復習

テキストを数値に変換するには、無効な入力で例外をスローするint.Parse、安全に処理して bool とout値を返すint.TryParse、または null を処理し、多くの型を変換できるConvertクラスを使います。信頼できない入力にはTryParseを優先し、逆方向の変換にはToString()を使ってください。

using System;

class Program
{
    static void Main()
    {
        if (int.TryParse("99", out int n))
            Console.WriteLine("Value: " + n);
        Console.WriteLine("Convert: " + Convert.ToInt32("7"));
    }
}

よくある質問

「Convertクラスと解析」レッスンは無料ですか?

はい。「Convertクラスと解析」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。

「Convertクラスと解析」で何を学びますか?

ConvertとTryParseで解析と変換を行います。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Convertクラスと解析」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 値型と参照型
  2. ボックス化とボックス化解除
  3. 暗黙的変換と明示的変換
  4. Convertクラスと解析
← C# Academyに戻る