Convert クラス

基本データ型を別の基本データ型に変換します。

この型のすべてのメンバの一覧については、Convert メンバ を参照してください。

System.Object
   System.Convert

NotInheritable Public Class Convert
[C#]
public sealed class Convert
[C++]
public __gc __sealed class Convert
[JScript]
public class Convert

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

このクラスは、指定した型の値と等価な基本型を返します。サポートされている基本型は、 BooleanCharSByteByteInt16Int32Int64UInt16UInt32UInt64SingleDoubleDecimalDateTime 、および String です。

変換メソッドは、各基本型をそれぞれ他の基本型に変換するために存在します。ただし、実行される実際の変換操作は、次の 3 つのカテゴリに分類されます。

  • ある型をそれと同じ型に変換すると、その型が返されます。実際には変換は実行されません。
  • 意味のある結果を生成できない変換を実行しようとすると、 InvalidCastException がスローされます。実際には変換は実行されません。 Char から BooleanSingleDoubleDecimal 、または DateTime に変換しようとした場合、およびこれらの型から Char に変換しようとした場合は、例外がスローされます。 DateTime から String を除くいずれかの型に変換した場合、および String を除くいずれかの型から DateTime に変換した場合は、例外がスローされます。
  • 上記以外の基本型は、他の任意の基本型との間で変換できます。

数値型を変換したために有効桁数が減少した場合、つまり最下位のいくつかの桁が失われた場合、例外はスローされません。ただし、変換結果が、特定の変換メソッドの戻り値の型で表される最大桁数を超えている場合は、例外がスローされます。

たとえば DoubleSingle に変換すると、有効桁数が失われることがありますが、例外はスローされません。ただし、 Double の絶対値が大きすぎて Single で表すことができない場合には、オーバーフロー例外がスローされます。

バイトの配列から String または base 64 の数字で構成される Unicode 文字配列への変換と、この逆方向の変換をサポートする一連のメソッドがあります。base 64 の数字で表現されるデータを送信する場合、7 ビット文字だけを送信できるデータ チャネルを使用すると、このデータを簡単に送信できます。

このクラスの多くのメソッドは、型を変換するときに、変換元オブジェクトに対して対応する明示的な IConvertible インターフェイス実装メソッドを呼び出します。このようなメソッドが存在しない場合は InvalidCastException がスローされます。

このクラスの一部のメソッドは、 IFormatProvider インターフェイスを実装するパラメータ オブジェクトを受け入れます。このパラメータにより、変換処理を支援するカルチャに固有の書式情報が指定されます。基本値型ではこのパラメータが無視されますが、 IConvertible を実装するユーザー定義型ではこのパラメータが受け入れられます。

基本値型の詳細については、「参照」セクションに示されている該当トピックを参照してください。

使用例

[Visual Basic, C#, C++] 次のサンプルでは、 ToInt32ToBooleanToString など、このクラスの変換メソッドのいくつかを使用しています。

 
Dim dNumber As Double
dNumber = 23.15

Try
   ' Returns 23
   Dim iNumber As Integer
   iNumber = System.Convert.ToInt32(dNumber)
Catch exp As System.OverflowException
   System.Console.WriteLine("Overflow in double to int conversion.")
End Try

' Returns True
Dim bNumber As Boolean
bNumber = System.Convert.ToBoolean(dNumber)

' Returns "23.15"
Dim strNumber As String
strNumber = System.Convert.ToString(dNumber)

Try
   ' Returns '2'
   Dim chrNumber As Char
   chrNumber = System.Convert.ToChar(strNumber.Chars(1))
Catch exp As System.ArgumentNullException
   System.Console.WriteLine("String is null.")
Catch exp As System.FormatException
   System.Console.WriteLine("String length is greater than 1.")
End Try

' System.Console.ReadLine() returns a string and it
' must be converted.
Dim newInteger As Integer
newInteger = 0
Try
   System.Console.WriteLine("Enter an integer:")
   newInteger = System.Convert.ToInt32(System.Console.ReadLine())
Catch exp As System.ArgumentNullException
   System.Console.WriteLine("String is null.")
Catch exp As System.FormatException
   System.Console.WriteLine("String does not consist of an " + _
       "optional sign followed by a series of digits.")
Catch exp As System.OverflowException
   System.Console.WriteLine("Overflow in string to int conversion.")
End Try

System.Console.WriteLine("Your integer as a double is {0}", _
                         System.Convert.ToDouble(newInteger))

[C#] 
double dNumber = 23.15;

try {
    // Returns 23
    int    iNumber = System.Convert.ToInt32(dNumber);
}
catch (System.OverflowException) {
    System.Console.WriteLine(
                "Overflow in double to int conversion.");
}
// Returns True
bool   bNumber = System.Convert.ToBoolean(dNumber);

// Returns "23.15"
string strNumber = System.Convert.ToString(dNumber);

try {
    // Returns '2'
    char chrNumber = System.Convert.ToChar(strNumber[0]);
} 
catch (System.ArgumentNullException) {
    System.Console.WriteLine("String is null");
}
catch (System.FormatException) {
    System.Console.WriteLine("String length is greater than 1.");
}

// System.Console.ReadLine() returns a string and it
// must be converted.
int newInteger = 0;
try {
    System.Console.WriteLine("Enter an integer:");
    newInteger = System.Convert.ToInt32(
                        System.Console.ReadLine());
}
catch (System.ArgumentNullException) {
    System.Console.WriteLine("String is null.");
}
catch (System.FormatException) {
    System.Console.WriteLine("String does not consist of an " +
                    "optional sign followed by a series of digits.");
} 
catch (System.OverflowException) {
    System.Console.WriteLine(
    "Overflow in string to int conversion.");
}

System.Console.WriteLine("Your integer as a double is {0}",
                         System.Convert.ToDouble(newInteger));

[C++] 
Double dNumber = 23.15;

try {
    // Returns 23
    Int32 iNumber = Convert::ToInt32(dNumber);
}
catch (OverflowException*) {
    Console::WriteLine("Overflow in Double to Int32 conversion");
}

// Returns True
Boolean bNumber = Convert::ToBoolean(dNumber);
        
// Returns "23.15"
String* strNumber = Convert::ToString(dNumber);

try {
    // Returns '2'
    Char chrNumber = Convert::ToChar(strNumber->Substring(0,1));
} 
catch (ArgumentNullException*) {
    Console::WriteLine("String is null");
}
catch (FormatException*) {
    Console::WriteLine("String length is greater than 1");
}

// Console.ReadLine() returns a string and it
// must be converted.
Int32 newInteger = 0;
try {
    Console::WriteLine("Enter an integer:");
    newInteger = Convert::ToInt32("10001");
}
catch (ArgumentNullException*) {
    Console::WriteLine("String is null");
}
catch (FormatException*) {
    Console::WriteLine("String does not consist of an optional sign followed by a series of digits");
} 
catch (OverflowException*) {
    Console::WriteLine("Overflow in string to Int32 conversion");
}

Console::WriteLine("Your integer as a Double is {0}", __box(Convert::ToDouble(newInteger)));

[Visual Basic] 
' Sample for the Convert class summary.
Imports System

Class Sample
   Public Shared Sub Main()
      Dim nl As String = Environment.NewLine
      Dim str As String = "{0}Return the Int64 equivalent of the following base types:{0}"
      Dim xBool As Boolean = False
      Dim xShort As Short = 1
      Dim xInt As Integer = 2
      Dim xLong As Long = 3
      Dim xSingle As Single = 4F
      Dim xDouble As Double = 5.0
      Dim xDecimal As Decimal = 6D
      Dim xString As String = "7"
      Dim xChar As Char = "8"c ' '8' = hexadecimal 38 = decimal 56
      Dim xByte As Byte = 9
      
      '  The following types are not CLS-compliant.
      ' Dim xUshort As System.UInt16 = 120
      ' Dim xUint As System.UInt32 = 121
      ' Dim xUlong As System.UInt64 = 122
      ' Dim xSbyte As System.SByte = 123
      
      '  The following type cannot be converted to an Int64.
      '  Dim xDateTime As System.DateTime = DateTime.Now

      Console.WriteLine(str, nl)
      Console.WriteLine("Boolean:  {0}", Convert.ToInt64(xBool))
      Console.WriteLine("Int16:    {0}", Convert.ToInt64(xShort))
      Console.WriteLine("Int32:    {0}", Convert.ToInt64(xInt))
      Console.WriteLine("Int64:    {0}", Convert.ToInt64(xLong))
      Console.WriteLine("Single:   {0}", Convert.ToInt64(xSingle))
      Console.WriteLine("Double:   {0}", Convert.ToInt64(xDouble))
      Console.WriteLine("Decimal:  {0}", Convert.ToInt64(xDecimal))
      Console.WriteLine("String:   {0}", Convert.ToInt64(xString))
      Console.WriteLine("Char:     {0}", Convert.ToInt64(xChar))
      Console.WriteLine("Byte:     {0}", Convert.ToInt64(xByte))
      Console.WriteLine("DateTime: There is no example of this conversion because")
      Console.WriteLine("          a DateTime cannot be converted to an Int64.")
      '
      Console.Write("{0}The following types are not supported: ", nl)
      Console.WriteLine("UInt16, UInt32, UInt64, and SByte")
   End Sub 'Main
End Class 'Sample
'
'This example produces the following results:
'
'Return the Int64 equivalent of the following base types:
'
'Boolean:  0
'Int16:    1
'Int32:    2
'Int64:    3
'Single:   4
'Double:   5
'Decimal:  6
'String:   7
'Char:     56
'Byte:     9
'DateTime: There is no example of this conversion because
'          a DateTime cannot be converted to an Int64.
'
'The following types are not supported: UInt16, UInt32, UInt64, and SByte
'

[C#] 
// Sample for the Convert class summary.
using System;

class Sample 
{
    public static void Main() 
    {
    string nl = Environment.NewLine;
    string str = "{0}Return the Int64 equivalent of the following base types:{0}";
    bool    xBool = false;
    short   xShort = 1;
    int     xInt   = 2;
    long    xLong  = 3;
    float   xSingle = 4.0f;
    double  xDouble = 5.0;
    decimal xDecimal = 6.0m;
    string  xString = "7";
    char    xChar   = '8'; // '8' = hexadecimal 38 = decimal 56
    byte    xByte  =  9;

//  The following types are not CLS-compliant.
    ushort  xUshort = 120;   
    uint    xUint =   121;
    ulong   xUlong =  122;
    sbyte   xSbyte  = 123;

//  The following type cannot be converted to an Int64.
//  DateTime xDateTime = DateTime.Now;

    Console.WriteLine(str, nl);
    Console.WriteLine("Boolean:  {0}", Convert.ToInt64(xBool));
    Console.WriteLine("Int16:    {0}", Convert.ToInt64(xShort));
    Console.WriteLine("Int32:    {0}", Convert.ToInt64(xInt));
    Console.WriteLine("Int64:    {0}", Convert.ToInt64(xLong));
    Console.WriteLine("Single:   {0}", Convert.ToInt64(xSingle));
    Console.WriteLine("Double:   {0}", Convert.ToInt64(xDouble));
    Console.WriteLine("Decimal:  {0}", Convert.ToInt64(xDecimal));
    Console.WriteLine("String:   {0}", Convert.ToInt64(xString));
    Console.WriteLine("Char:     {0}", Convert.ToInt64(xChar));
    Console.WriteLine("Byte:     {0}", Convert.ToInt64(xByte));
    Console.WriteLine("DateTime: There is no example of this conversion because");
    Console.WriteLine("          a DateTime cannot be converted to an Int64.");
//
    Console.WriteLine("{0}The following types are not CLS-compliant.{0}", nl);
    Console.WriteLine("UInt16:   {0}", Convert.ToInt64(xUshort));
    Console.WriteLine("UInt32:   {0}", Convert.ToInt64(xUint));
    Console.WriteLine("UInt64:   {0}", Convert.ToInt64(xUlong));
    Console.WriteLine("SByte:    {0}", Convert.ToInt64(xSbyte));
    }
}
/*
This example produces the following results:

Return the Int64 equivalent of the following base types:

Boolean:  0
Int16:    1
Int32:    2
Int64:    3
Single:   4
Double:   5
Decimal:  6
String:   7
Char:     56
Byte:     9
DateTime: There is no example of this conversion because
          a DateTime cannot be converted to an Int64.

The following types are not CLS-compliant.

UInt16:   120
UInt32:   121
UInt64:   122
SByte:    123
*/

[C++] 
// Sample for the Convert class summary.
#using <mscorlib.dll>

using namespace System;


int main() {
   String* nl = Environment::NewLine;
   String* str = S" {0}Return the Int64 equivalent of the following base types: {0}";
   bool    xBool = false;
   short   xShort = 1;
   int     xInt   = 2;
   long    xLong  = 3;
   float   xSingle = 4.0f;
   double  xDouble = 5.0;
   Decimal xDecimal = 6.0;
   String*  xString = S"7";
   char    xChar   = '8'; // '8' = hexadecimal 38 = decimal 56
   Byte    xByte  =  9;

   //  The following types are not CLS-compliant.
   UInt16  xUshort = 120;
   UInt32    xUint =   121;
   UInt64   xUlong =  122;
   SByte   xSbyte  = 123;

   //  The following type cannot be converted to an Int64.
   //  DateTime xDateTime = DateTime::Now;

   Console::WriteLine(str, nl);
   Console::WriteLine(S"Boolean: {0}", __box(Convert::ToInt64(xBool)));
   Console::WriteLine(S"Int16: {0}", __box(Convert::ToInt64(xShort)));
   Console::WriteLine(S"Int32: {0}", __box(Convert::ToInt64(xInt)));
   Console::WriteLine(S"Int64: {0}", __box(Convert::ToInt64(xLong)));
   Console::WriteLine(S"Single: {0}", __box(Convert::ToInt64(xSingle)));
   Console::WriteLine(S"Double: {0}", __box(Convert::ToInt64(xDouble)));
   Console::WriteLine(S"Decimal: {0}", __box(Convert::ToInt64(xDecimal)));
   Console::WriteLine(S"String: {0}", __box(Convert::ToInt64(xString)));
   Console::WriteLine(S"Char: {0}", __box(Convert::ToInt64(xChar)));
   Console::WriteLine(S"Byte: {0}", __box(Convert::ToInt64(xByte)));
   Console::WriteLine(S"DateTime: There is no example of this conversion because");
   Console::WriteLine(S"          a DateTime cannot be converted to an Int64.");
   //
   Console::WriteLine(S" {0}The following types are not CLS-compliant. {0}", nl);
   Console::WriteLine(S"UInt16: {0}", __box(Convert::ToInt64(xUshort)));
   Console::WriteLine(S"UInt32: {0}", __box(Convert::ToInt64(xUint)));
   Console::WriteLine(S"UInt64: {0}", __box(Convert::ToInt64(xUlong)));
   Console::WriteLine(S"SByte: {0}", __box(Convert::ToInt64(xSbyte)));
}
/*
This example produces the following results:

Return the Int64 equivalent of the following base types:

Boolean:  0
Int16:    1
Int32:    2
Int64:    3
Single:   4
Double:   5
Decimal:  6
String:   7
Char:     56
Byte:     9
DateTime: There is no example of this conversion because
a DateTime cannot be converted to an Int64.

The following types are not CLS-compliant.

UInt16:   120
UInt32:   121
UInt64:   122
SByte:    123
*/

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

Convert メンバ | System 名前空間 | Object | SByte | Int16 | Int32 | Int64 | Byte | UInt16 | UInt32 | UInt64 | Single | Double | Decimal | Boolean | Char | String