C# データ型変換

2022/09/17に公開

データ型変換

C#でのデータ型変換方法についてまとめます。

整数型

整数型と一言で言っても符号有無やサイズの異なる複数の型があります。

No. 型名 種別 値の範囲
1 sbyte 符号付き8ビット整数 -128 ~ 127
2 byte 符号なし8ビット整数 0 ~ 255
3 short 符号付き16ビット整数 -32,768 ~ 32,767
4 ushort 符号なし16ビット整数 0 ~ 65,535
5 int 符号付き32ビット整数 -2,147,483,648 ~ 2,147,483,647
6 uint 符号なし32ビット整数 0 ~ 4,294,967,295
7 long 符号付き64ビット整数 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
8 ulong 符号なし64ビット整数 0 ~ 18,446,744,073,709,551,615

整数型⇒整数型

変換前の整数型の取り得る全ての値が変換後の整数型に含まれる場合は暗黙的に型変換可能です。
そうでない場合には明示的にキャストが必要です。
変換前の値が変換後の整数型で表現できない場合は、意図しないデータになってしまうので注意が必要です。

int i200 = 200;
byte b;
b = (byte)i200;
Console.WriteLine(200);             // 200
Console.WriteLine(b);               // 200
// byte型の上限値は255だが300も代入できてしまう。
int i300 = 300;
b = (byte)i300;
Console.WriteLine(i300);            // 300
Console.WriteLine(b);               // 44

整数型⇒文字型

文字型(char型)は16ビットでUnicode UTF-16文字を表します。
整数値を文字コードとして文字型に変換するにはキャストして代入します。
整数値をそのまま文字として文字型に変換する場合はConvertクラスのToCharメソッドを使用します。

char ToChar(object val);
//  val     : 文字型に変換する整数値
//  return  : 値に相当する文字
int i106 = 106;
char chj = (char)i106;
Console.WriteLine(chj);         // j

int i2 = 2;
char ch2 = Convert.ToChar(i2);
Console.WriteLine(i2);          // 2

整数型⇒文字列型

整数値を文字列型(string型)に変換するにはToStringメソッドを使用します。

string ToString();
//  return  : 整数値を表す文字列
short s1234 = 1234;
string str = s1234.ToString();
Console.WriteLine(str);         // 1234

整数型⇒列挙体型

整数型の値で表される列挙体型(enum型)に変換することができます。
整数型を列挙体型(enum型)に変換するにはenumクラスのToObjectメソッドを使用します。

object ToObject(Type enumType, int value);
// enumType : 返される列挙体型
// int      : 列挙体型に変換される整数値
// return   : valueから変換した列挙体型のインスタンス
enum enum_abc { alpha = 0,
                beta,
                charlie };

int i1 = 1;
enum_abc e1 = (enum_abc)Enum.ToObject(typeof(enum_abc), i1);
Console.WriteLine(e1);                                          // beta

文字型

文字型⇒整数型

文字型(char型)のデータを整数型に変換するにはGetNumericValueメソッドを使用します。
GetNumericValueメソッドの戻り値は浮動小数点型(double型)なので整数型にキャストして使用します。

double GetNumericValue(char c);
// c      : 数値に変換する文字
// return : cが数字を表す場合はcの数値。それ以外の場合は-1.0。
char ch = '2';
int ii = (int)char.GetNumericValue(ch);
Console.WriteLine(ii);                      // 2

文字型⇒文字列型

整数型からの変換と同様にToStringメソッドで文字型(char型)から文字列型(string型)に変換できます。

char c = '鳥';
string str = c.ToString();
Console.WriteLine(str);         // 鳥

文字列型

文字列型⇒整数型

文字列型(string型)を整数型に変換するには、Parseメソッドを使用します。

int Parse(string s);
// s      : 数値に変換する文字列
// return : sの文字列で表される数値
string str = "1234";
int num = int.Parse(str);
Console.WriteLine(num);     // 1234

文字列型⇒文字型

文字列型(string型)から文字型(char型)1文字に変換するには文字列型のインデックスを指定して抜き出します。
文字列型を文字型の配列に変換する場合にはToCharArrayメソッドを使用します。

char[] ToCharArray();
// return : 変換後の文字型配列
string str = "abcde";
char[] arr = str.ToCharArray();
Console.WriteLine(arr);             // abcde
char ch = str[1];
Console.WriteLine(ch);              // b

文字列型⇒列挙体型

数字を表す文字列型(string型)を列挙体型(enum型)に変換するにはParseメソッドを使用します。

object Parse(Type enumType, stirng value);
// enumType : 返される列挙体型
// value    : 列挙体型に変換される文字列
// return   : valueから変換した列挙体型のインスタンス
string str = "2";
enum_abc ee = (enum_abc)Enum.Parse(typeof(enum_abc), str);
Console.WriteLine(ee);                                          // charlie

Discussion