データ型の変換

完了済み

Tip

詳細については、「 テキストと画像 」タブを参照してください。

C# は厳密に型指定されているため、あるデータ型から別のデータ型に値を明示的に変換する必要がある場合があります。 ユーザーが数値を入力した場合でも、 Console.ReadLine() は常にテキスト ( string) を返すので、これはユーザー入力を操作する場合に特に重要です。

変換が重要な理由

この一般的なシナリオを考えてみましょう。

Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int nextYear = ageInput + 1;    // ERROR! Can't add int to string

ユーザー入力で数学を行うには、最初に文字列を数値に変換する必要があります。

変換メソッド

C# には、データ型間で値を変更するための Convert メソッドが用意されています。

Method に変換します Example Result
Convert.ToInt32() int Convert.ToInt32("42") 42
Convert.ToDecimal() 10 進 Convert.ToDecimal("19.99") 19.99m
Convert.ToDouble() double Convert.ToDouble("3.14") 3.14
Convert.ToString() 文字列 Convert.ToString(42) "42"

前のシナリオを修正する方法を次に示します。

Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int age = Convert.ToInt32(ageInput);
int nextYear = age + 1;
Console.WriteLine($"Next year you'll be {nextYear}");

このコードは、 C# コード エディターで自分で実行してみてください。

解析メソッド

文字列を数値に変換するもう 1 つの方法は、 Parse メソッドを使用することです。

int age = int.Parse("25");
decimal price = decimal.Parse("19.99");
double average = double.Parse("87.5");

Convert.ToInt32()もint.Parse()も同様のことを行います。好きなスタイルを使用します。

数値型間のキャスト

数値型 ( decimal から int など) 間で変換するには、ターゲット型をかっこで囲んで キャスト を使用します。

decimal price = 19.99m;
int wholePrice = (int)price;         // Casts to int: 19 (decimal dropped)
Console.WriteLine(wholePrice);       // Output: 19

除算中に 10 進精度を維持するようにキャストすることもできます。

int first = 7;
int second = 2;
decimal result = (decimal)first / (decimal)second;
Console.WriteLine(result);           // Output: 3.5

無効な変換の場合はどうなりますか?

数値として解釈できない値を変換しようとすると、C# はエラーをスローします。

int number = Convert.ToInt32("hello");    // ERROR: Input string was not in a correct format

ここでは、試す前に値を変換できることを確認してください。 後で、エラーを適切に処理する方法について説明します。