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) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
このクラスは、指定した型の値と等価な基本型を返します。サポートされている基本型は、 Boolean 、 Char 、 SByte 、 Byte 、 Int16 、 Int32 、 Int64 、 UInt16 、 UInt32 、 UInt64 、 Single 、 Double 、 Decimal 、 DateTime 、および String です。
変換メソッドは、各基本型をそれぞれ他の基本型に変換するために存在します。ただし、実行される実際の変換操作は、次の 3 つのカテゴリに分類されます。
- ある型をそれと同じ型に変換すると、その型が返されます。実際には変換は実行されません。
- 意味のある結果を生成できない変換を実行しようとすると、 InvalidCastException がスローされます。実際には変換は実行されません。 Char から Boolean 、 Single 、 Double 、 Decimal 、または DateTime に変換しようとした場合、およびこれらの型から Char に変換しようとした場合は、例外がスローされます。 DateTime から String を除くいずれかの型に変換した場合、および String を除くいずれかの型から DateTime に変換した場合は、例外がスローされます。
- 上記以外の基本型は、他の任意の基本型との間で変換できます。
数値型を変換したために有効桁数が減少した場合、つまり最下位のいくつかの桁が失われた場合、例外はスローされません。ただし、変換結果が、特定の変換メソッドの戻り値の型で表される最大桁数を超えている場合は、例外がスローされます。
たとえば Double を Single に変換すると、有効桁数が失われることがありますが、例外はスローされません。ただし、 Double の絶対値が大きすぎて Single で表すことができない場合には、オーバーフロー例外がスローされます。
バイトの配列から String または base 64 の数字で構成される Unicode 文字配列への変換と、この逆方向の変換をサポートする一連のメソッドがあります。base 64 の数字で表現されるデータを送信する場合、7 ビット文字だけを送信できるデータ チャネルを使用すると、このデータを簡単に送信できます。
このクラスの多くのメソッドは、型を変換するときに、変換元オブジェクトに対して対応する明示的な IConvertible インターフェイス実装メソッドを呼び出します。このようなメソッドが存在しない場合は InvalidCastException がスローされます。
このクラスの一部のメソッドは、 IFormatProvider インターフェイスを実装するパラメータ オブジェクトを受け入れます。このパラメータにより、変換処理を支援するカルチャに固有の書式情報が指定されます。基本値型ではこのパラメータが無視されますが、 IConvertible を実装するユーザー定義型ではこのパラメータが受け入れられます。
基本値型の詳細については、「参照」セクションに示されている該当トピックを参照してください。
使用例
[Visual Basic, C#, C++] 次のサンプルでは、 ToInt32 、 ToBoolean 、 ToString など、このクラスの変換メソッドのいくつかを使用しています。
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