「C#.NET」勇敢な戦士「Parse」と冷静な神官「TryParse」~文字列型変換の違いを学ぶ~

2024年11月8日金曜日

基本 型変換 文字列操作

t f B! P L

名前空間 System

Parse
TryParse

自己紹介

こんにちは、型変換の世界に生きる私達二人の姉妹をご紹介します!姉の「Parse」は勇敢な戦士で、目標があれば一気に突き進むタイプ。しかし、彼女はミスを恐れず失敗することもあります。一方、妹の「TryParse」は冷静な神官。慎重に物事を進めるので、失敗を回避しながらも結果を届けてくれます。この二人の特性を知ることで、C#の型変換をもっと理解できるでしょう。

基本機能

「Parse」と「TryParse」はどちらも文字列を特定の型に変換する役割を持っています。しかし、働き方に大きな違いがあります。

戦士「Parse」は文字列をそのまま目標の型に変換しますが、不正な値が渡されると例外を投げてしまいます。一方、神官「TryParse」は事前に慎重にチェックし、失敗しても例外は投げず、単に変換が成功したかどうかを知らせるだけです。

Parseの役割と注意点

「Parse」は型変換のスピードスターで、目的地まで一直線です。例えば、文字列 "123" を整数型に変換する場合、int.Parse("123") とすれば瞬時に結果を得られます。しかし、入力が "abc" のような不正な文字列の場合は例外 FormatException が発生します。これが彼女の乱暴な一面です。

そのため、「Parse」を使うときは入力値が正しいことを事前に保証する必要があります。

TryParseの役割と注意点

「TryParse」はとても慎重です。文字列を変換する前に、変換可能かどうかをしっかりチェックします。int.TryParse("123", out result) のように使うと、変換が成功したかどうかを bool 値で返し、変換後の結果は out パラメータに格納されます。

「TryParse」の最大の魅力は、失敗しても例外を発生させないことです。これにより、プログラムの安定性が向上します。

どちらを選ぶべきか

「Parse」は入力データが確実に正しい場合に使うのが適しています。一方、「TryParse」は入力データが信頼できない場合や、例外処理を避けたい場合に有用です。状況に応じて使い分けましょう。

具体例と適用場面

速度は「Parse」>「TryParse」になります。

そのため、ユーザー入力を扱う際には「TryParse」を使用して安全性を確保し、固定された設定値など信頼できるデータには「Parse」を使うと良いでしょう。

サンプルコード

以下は、「Parse」と「TryParse」を使ったサンプルコードです。

コードの後に詳しく解説しますので、ぜひ実際に動かしてみてください。

C#
using System;

class Program
{
    static void Main()
    {
        // Parseの例
        try
        {
            // 正しい文字列
            int number = int.Parse("123");
            Console.WriteLine($"Parse成功: {number}");

            // 不正な文字列
            number = int.Parse("abc"); // ここで例外が発生
            Console.WriteLine($"Parse成功: {number}");
        }
        catch (FormatException ex)
        {
            Console.WriteLine($"Parse失敗: {ex.Message}");
        }

        // TryParseの例
        if (int.TryParse("123", out int result))
        {
            Console.WriteLine($"TryParse成功: {result}");
        }
        else
        {
            Console.WriteLine("TryParse失敗");
        }

        if (int.TryParse("abc", out result))
        {
            Console.WriteLine($"TryParse成功: {result}");
        }
        else
        {
            Console.WriteLine("TryParse失敗");
        }
    }
}

コードの解説:

このサンプルコードでは、「Parse」と「TryParse」の動作を比較しています。「Parse」は不正な文字列で例外を投げるのに対し、「TryParse」は失敗を安全に処理します。この違いを理解することで、プログラムの安定性を向上させる選択ができます。

このブログを検索

QooQ