C# でさまざまなデータ型を変換および解析する方法
適切なデータ型を使用していること、およびデータ型間の変換方法を理解していることを確認してください。
C# で新しい変数を宣言するときは、通常、特定のデータ型で変数を初期化します。これは、整数、10 進数、ブール値、文字列、または別のデータ型である可能性があります。
値をあるデータ型から別のデータ型に変換できます。たとえば、文字列を整数に変換する場合は、最初に値を解析する必要があります。値を変換および解析できるいくつかの方法を次に示します。
データを変換または解析する必要があるのはなぜですか?
データの解析が必要になる場合の例としては、C# コンソール アプリケーションでユーザー入力を要求している場合があります。
Console.WriteLine("Enter your age:");
string salary = Console.ReadLine();
この場合、ユーザーは整数値を入力しますが、アプリケーションはデフォルトでそれを文字列として保存します。計算に文字列値を使用しようとすると、コンパイル エラーが発生します。
データ型を変換するもう 1 つの理由は、特定のデータ型でのみ使用できる特定のメソッドにアクセスすることです。たとえば、DateTime 構造体には、分を追加できる関数が含まれています。代わりに文字列を使用していた場合は、メソッドにアクセスできません。
C# で作成されたクラスのデータ型構造または C# の構造に従う必要がある場合は、値を別のデータ型に変換することもできます。
さまざまなデータ型を変換および解析する方法
整数、double、ブール型、日時型などのさまざまなデータ型を解析できます。
文字列から整数へ
文字列を整数に変換するには、Parse() メソッドを使用します。
string strInt = "45";
int int32 = Int32.Parse(strInt);
Console.WriteLine(int32); // output: 45
文字列を解析して、Int16、Int32、Int64 などのさまざまなビット サイズの整数に変換することもできます。
int int16 = Int16.Parse(strInt);
Console.WriteLine(int16); // output: 45
Parse() メソッドを使用している場合は、文字列値が整数を表していることを確認してください。 「Hello」などの非整数値を解析しようとすると、実行時に解析エラーが発生します。
string invalidString = "Hello";
int invalidResult = Int32.Parse(invalidString);
TryParse() メソッドを使用して、解析時に発生する可能性のある例外をキャッチすることもできます。
int tryParseResult = 0;
if (Int32.TryParse(invalidString, out tryParseResult))
{
Console.WriteLine(tryParseResult);
}
else
{
Console.WriteLine("Something went wrong");
}
整数を文字列に変換するには、ToString() メソッドを使用します。
string intString = 45.ToString();
Console.WriteLine(intString); // output: 45
文字列から倍精度へ
文字列を double に解析することは、文字列を integer に解析することと非常に似ています。 Double クラスの Parse() メソッドを使用します。
string strDouble = "90.5";
double d = Double.Parse(strDouble);
Console.WriteLine(d); // output: 90.5
整数の場合と同様に、TryParse() メソッドを使用して、発生する可能性のある解析エラーを捕捉することもできます。
string invalidStringDouble = "Hello";
double tryParseDouble = 0;
if (Double.TryParse(invalidStringDouble, out tryParseDouble))
{
Console.WriteLine(tryParseDouble);
}
double を整数に戻すには、ToString() メソッドを使用します。
double dDouble = 90.5;
string dString = dDouble.ToString();
Console.WriteLine(dString); // output: 90.5
倍精度から整数へ
キャストを使用して double を整数に変換できます。整数には整数のみが格納されるため、変換では小数点以下の桁が削除されます。たとえば、「12.34」を変換すると、値「12」のみが保存されます。
double dValue = 12.34;
int iValue = (int)dValue;
Console.WriteLine(iValue); // output: 12
整数を double にキャストして戻すこともできます。
dValue = (double)iValue;
Console.WriteLine(dValue); // output: 12
文字列とブール値
文字列をブール値に変換するには、Parse() メソッドまたは ToBoolean() メソッドを使用します。
string stringBool = "True";
bool b = bool.Parse(stringBool);
// or
b = Convert.ToBoolean(stringBool);
Console.WriteLine(b); // output: true
ブール値を文字列に変換するには、ToString() メソッドを使用します。
string strTrue = true.ToString();
string strFalse = false.ToString();
整数とブール値
整数をブール値に変換するには、ToBoolean() メソッドを使用して、「1」または「0」を同等のブール値に変換します。値「1」は「true」に変換され、「0」は「false」に変換されます。
int falseBit = 0;
int trueBit = 1;
Console.WriteLine(Convert.ToBoolean(falseBit)); // output: false
Console.WriteLine(Convert.ToBoolean(trueBit)); // output: true
「1」または「0」以外の整数値を ToBoolean() メソッドに渡すこともできます。デフォルトでは、メソッドは引き続き「true」を返します。
int invalidBit = 8;
Console.WriteLine(Convert.ToBoolean(invalidBit)); // output: true
ブール値を整数に変換するには、Convert.ToInt32() メソッドを使用します。 「true」を変換すると「1」が返され、「false」を変換すると「0」が返されます。
bool iBool = true;
int bInt = Convert.ToInt32(iBool);
Console.WriteLine(bInt); // output: 1
文字列から日時へ
文字列を日時形式に解析するには、DateTime.Parse() メソッドを使用します。
DateTime newDateTime = DateTime.Parse("01/01/2018 00:00:00");
Console.WriteLine(newDateTime); // output: 01/01/2018 00:00:00
datetime を文字列に変換するには、ToString() メソッドを使用します。
DateTime dt = new DateTime(2018, 1, 1);
string dtString = dt.ToString();
Console.WriteLine(dtString); // output: 01/01/2018 00:00:00
値をさまざまなデータ型に解析する
これで、値をあるデータ型から別のデータ型に変換する方法が理解できました。変換はこれらだけではないため、C# の他のデータ型についても学習してください。
他のデータ型が JavaScript などの他の言語でどのように機能するかを調べることもできます。