Share via


変換の概要

更新 : 2007 年 11 月

すべての値には関連付けられた型があり、その値に割り振られる容量、可能な値の範囲、使用可能なメンバなどの属性を定義しています。多くの値は複数の型として表現できます。たとえば、値 4 は整数または浮動小数点数として表現できます。変換を実行すると、変換元の型の値と等価な値が新しい型で作成されますが、2 つのオブジェクトがまったく同一である (値が正確に一致する) とは限りません。.NET Framework は暗黙的な変換をサポートしているのに加えて、型と型の間の変換のメソッドを提供する System.Convert クラスによって明示的な変換もサポートしています。

メモ :

さらに、明示的な変換を行う機能が個々の言語で用意されている場合もあります。たとえば C# ではキャスト演算子が使用され、Visual Basic ではコンパイラで実装された CType、CInt、DirectCast などの変換関数が使用されます。

共通言語ランタイムは、拡大変換と縮小変換を両方ともサポートします。たとえば、32 ビット符号付き整数として表される値を 64 ビット符号付き整数に変換できます。これは、拡大変換の例です。この逆の変換 (64 ビットから 32 ビットへ) は、縮小変換の例です。拡大変換の結果として (精度が失われたとしても) 情報が失われることはありませんが、縮小変換中には情報が失われることがあります。拡大変換の一覧については、「型変換の表」を参照してください。

次の例は拡大変換を示しています。ここでは Int32 の値 MyInt が Int64 値に変換されます。この変換は、Convert クラスおよび他の変換メソッドや演算子を使用せずに暗黙的に実行されます。

Dim MyInt As Integer = 1234567891
Dim MyBigInt As Long = MyInt
Console.WriteLine(MyBigInt)      ' Displays 1234567891
int MyInt = 1234567891;
long MyBigInt = MyInt;
Console.WriteLine(MyBigInt);           // Displays 1234567891

次の例は縮小変換を示しています。ここでは Int64 の値 MyBigInt が Int32 値に変換されます。このような縮小変換は、C# では常に明示的に実行する必要があり、Visual Basic では Option Strict がオンに設定されている場合に明示的に実行する必要があります。この例では、変換を行うために ToInt32 メソッドが呼び出されます。

Dim MyBigInt As Long = 1234567891
' exception handler: narrowing conversions can overflow
Try
   Dim MyInt As Integer = Convert.ToInt32(MyBigInt)
   Console.WriteLine(MyInt)         ' Displays 1234567891
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0} to an integer.", _ 
                     MyBigInt)      
End Try   
long MyBigInt = 1234567891;
// exception handler: narrowing conversions can overflow
try
{
   int MyInt = Convert.ToInt32(MyBigInt);
   Console.WriteLine(MyBigInt);        // Displays 1234567891
}
catch (OverflowException)
{
   Console.WriteLine("Unable to convert {0} to an integer.", 
                     MyBigInt);
}   

参照

概念

型変換の表

System.Convert を使用したデータ型の変換

明示的な変換

参照

System.Convert

その他の技術情報

基本型の操作