C# には int 型から double 型というように、
ある型から別の型に変換する機能があります。
型変換は、代入などの操作を行うだけで暗黙的に行われる変換と、 変換先の型を明示的に指定して行う変換があります。 また、いずれの変換も、変換できる型・できない型が予め決まっています。
暗黙的(implicit)な型変換とは、ある型の変数を別の型の変数に代入するだけで自動的に型を変換してくれる機能です。 以下に暗黙的な型変換の例を挙げます。
short m = 365; long n = m; // short から long への暗黙的な型変換。 double x = n; // long から double への暗黙的な型変換。
C# で定義されている組込み型同士の間の暗黙的な型変換は以下のとおりです。
| 変換元 | 変換先 |
|---|---|
sbyte | short, int, long, float, double, decimal |
byte | short, ushort, int, uint, long, ulong, float, double, decimal |
short | int, long, float, double, decimal |
ushort | int, uint, long, ulong, float, double, decimal |
int | long, float, double, decimal |
uint | long, ulong, float, double, decimal |
long | float, double, decimal |
ulong | float, double, decimal |
char | ushort, int, uint, long, ulong, float, double, decimal |
float | double |
C# における暗黙的な型変換の基本的なルールは以下のとおりです。
要するに、C# では型を変換しても値の大きさが失われない場合にのみ暗黙的な型変換が行えます。
ただし、int, uint, long から float への変換、および long から double への変換では有効桁数が落ちる場合があります。
暗黙的に変換を行えない型同士の変換は以下のように明示的(explicit)に行う必要があります。
int i = 365; short j = (short)i; // int から short への明示的な型変換。 int m = 365; byte n = (byte)m; // int から byte への明示的な型変換。 // byte は 0~255 までの範囲しか表現できないので、 // n の値は 365 mod 256 = 109 になる。 double x = 3.14159; long y = (long)x; // double から long への明示的な型変換。 // 値は小数点以下切捨てられて 3 になる。
この、「(変換後の型名)変数名」という形の式のことを「キャスト(cast)式」と呼びます。
C# では、すべての数値型同士の間で明示的な型変換を行うことが出来ます。
しかしながら、文字列から値型への変換は、キャストでは行えません。
文字列を数値化する場合には、Parse という物を使用します。