工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C#型変換完全ガイド:暗黙・明示的変換、Parse、Convertクラス

C#型変換をマスターする

C#におけるデータ型変換を、暗黙的・明示的キャストから強力な Parse と Convert APIまで、実例とベストプラクティスとともに解説します。

型変換——値をあるデータ型から別の型へ変えること——はC#の核心スキルです。各変換方法をいつ、どう使うかを理解すれば、安全で効率的なコードが書けます。

C#の変換は大きく2つに分類されます:

  1. 暗黙的型変換
  2. 明示的型変換(キャスト)

1. 暗黙的型変換

データ損失の恐れがない場合、コンパイラが自動的に行う変換です。構文的なオーバーヘッドがなく、安全です。

典型的なケースは、より小さな数値型から大きな型への変換——例えば int から double へ——で、値が切り捨てられることなく表現できます。

実例: 暗黙的型変換

using System;

namespace MyApplication {
    class Program {
        static void Main(string[] args) {
            int numInt = 500;
            // 暗黙的変換
            double numDouble = numInt;
            Console.WriteLine($"numInt value: {numInt}");
            Console.WriteLine($"numInt Type: {numInt.GetType()}");
            Console.WriteLine($"numDouble value: {numDouble}");
            Console.WriteLine($"numDouble Type: {numDouble.GetType()}");
            Console.ReadLine();
        }
    }
}

出力

numInt value: 500
numInt Type: System.Int32
numDouble value: 500
numDouble Type: System.Double

double の方が容量が大きいため、コンパイラは int 値をオーバーフローのリスクなしに安全に拡張できます。

注意: 暗黙的変換ではデータは失われませんが、結果の型のサイズは大きくなります。

2. 明示的型変換(キャスト)

大きい型から小さい型へ、あるいは無関係な型同士で変換する場合に使用します。開発者が意図を明示する必要があり、データ損失の可能性がある場合はコンパイラが警告を出します。

実例: 明示的型変換

using System;

namespace MyApplication {
    class Program {
        static void Main(string[] args) {
            double numDouble = 1.23;
            int numInt = (int)numDouble; // 明示的キャスト
            Console.WriteLine($"Original double Value: {numDouble}");
            Console.WriteLine($"Converted int Value: {numInt}");
            Console.ReadLine();
        }
    }
}

出力

Original double value: 1.23
Converted int value: 1

小数部分が切り捨てられ、1.23 が 1 になります。精度が重要なら、キャスト前に丸め処理を検討してください。

注意: キャストは「型キャスト」とも呼ばれます。

3. Parse() で文字列を変換

string から数値型へ変換する際、int.Parse、double.Parse などが簡潔で型安全なアプローチを提供します。

実例: int.Parse の使用

using System;

namespace Conversion {
    class Program {
        static void Main(string[] args) {
            string n = "100";
            int a = int.Parse(n);
            Console.WriteLine($"Original string value: {n}");
            Console.WriteLine($"Converted int value: {a}");
            Console.ReadLine();
        }
    }
}

出力

Original string value: 100
Converted int value: 100

数値でない文字列(例: "test")をパースしようとすると FormatException がスローされます。本番コードでは try-catch で囲むか、int.TryParse を使ってエラーを適切に処理してください。


4. Convert クラス

静的 Convert クラスは、多様なデータ型間の変換メソッドを幅広く提供し、必要なチェックを内部で行ってくれます。

メソッド説明
ToBoolean()bool に変換
ToChar()char に変換
ToDouble()double に変換
ToInt16()16ビット int に変換
ToString()string に変換

以下に代表的な変換例を示します。

実例: int → string と double

using System;

namespace Conversion {
    class Program {
        static void Main(string[] args) {
            int num = 100;
            Console.WriteLine($"int value: {num}");
            string str = Convert.ToString(num);
            Console.WriteLine($"string value: {str}");
            double dbl = Convert.ToDouble(num);
            Console.WriteLine($"Double value: {dbl}");
            Console.ReadLine();
        }
    }
}

出力

int value: 100
string value: 100
Double value: 100

実例: string ↔ double

using System;

namespace Conversion {
    class Program {
        static void Main(string[] args) {
            string str = "99.99";
            Console.WriteLine($"Original string value: {str}");
            double dbl = Convert.ToDouble(str);
            Console.WriteLine($"Converted Double value: {dbl}");

            double num = 88.9;
            Console.WriteLine($"Original double value: {num}");
            string newStr = Convert.ToString(num);
            Console.WriteLine($"Converted string value: {newStr}");
            Console.ReadLine();
        }
    }
}

出力

Original string value: 99.99
Converted Double value: 99.99
Original double value: 88.9
Converted string value: 88.9

実例: int → bool

using System;

namespace Conversion {
    class Program {
        static void Main(string[] args) {
            int num1 = 0;
            int num2 = 1;
            bool bool1 = Convert.ToBoolean(num1);
            bool bool2 = Convert.ToBoolean(num2);
            Console.WriteLine($"Boolean value of 0 is: {bool1}");
            Console.WriteLine($"Boolean value of 1 is: {bool2}");
            Console.ReadLine();
        }
    }
}

出力

Boolean value of 0 is: False
Boolean value of 1 is: True
注意: C#では 0 は false、0以外の整数は true と解釈されます。

これらの変換技術をマスターすれば、型安全で表現力豊かなコードが書け、ランタイムエラーを減らし可読性を高められます。

C言語

  1. ASTM A1018 グレード CS タイプB 低炭素鋼の仕様と特性
  2. ASTM A424 グレード タイプII 鋼の仕様と性能
  3. ASTM A424 グレード タイプI 鋼の主要特性と性能
  4. ASTM A792 CSタイプA鋼 — 詳細特性と仕様
  5. ASTM A53 Grade A Type E 配管 - 仕様と主要特性
  6. ASTM A53 Grade A Type S 配管 - シームレス管の仕様と主要特性
  7. ASTM A792 Grade CS Type C 鋼板 - 55%アルミニウム亜鉛合金めっき鋼板の特性
  8. Python 型変換とキャスト: 包括的ガイド
  9. Pythonにおける数値、型変換、数学のマスター
  10. Java型キャスト完全ガイド:拡大変換から縮小変換まで
  11. Javaジェネリクス完全解説: 型安全性・汎用メソッド/クラス・境界型パラメータの活用