更新:2007 年 11 月
命名空間:
System
組件:
mscorlib (在 mscorlib.dll 中)
Public NotInheritable Class Convert
public static class Convert
public ref class Convert abstract sealed
public final class Convert
public final class Convert
這個類別傳回和指定型別之值相等的型別。支援的基底型別 (Base Type) 有 Boolean、Char、SByte、Byte、Int16、Int32、Int64、UInt16、UInt32、UInt64、Single、Double、Decimal、DateTime 和 String。
轉換方法可用來轉換每個基底型別為其他的基底型別。然而,實際呼叫某個特定的轉換方法,可能會產生四種結果,視執行階段的基底型別值及目標基底型別而有所不同。這四種結果是:
如果數字型別 (Numeric Type) 的轉換導致精確度的遺失 (也就是說,遺失部分最小有效位數),將不會擲回例外狀況。然而,如果結果大於特定轉換方法的傳回值型別可以表示的值,將擲回例外狀況。
例如,在將 Double 轉換為 Single 時,可能會發生精確度的遺失,但是不會擲回例外狀況。然而,如果 Double 的範圍超過 Single 可以表示的範圍,將擲回溢位例外狀況。
一組方法會支援轉換位元組陣列及 String,或由 Base 64 位數字元所組成的 Unicode 字元陣列之間的轉換。以 Base 64 位數表示的資料可以很容易地在只能傳輸 7 位元字元的資料通道上傳遞。
這個類別中的部分方法採用實作 IFormatProvider 介面的參數物件。這個參數可以提供特定文化特性的格式資訊,協助轉換處理。基底實值型別會忽略這個參數,但任何實作 IConvertible 的使用者定義型別可以承認它。
如需基底值型別的詳細資訊,請參閱「請參閱」章節中所列示的相關主題。
下列程式碼範例示範 Convert 類別 (Class) 中的部分轉換方法,包含 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))
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));
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" );
}
// System::Console::ReadLine() returns a string and it
// must be converted.
Int32 newInteger = 0;
try
{
Console::WriteLine( "Enter an integer:" );
newInteger = Convert::ToInt32( System::Console::ReadLine() );
}
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}",
Convert::ToDouble( newInteger ) );
double dNumber = 23.15;
try {
// Returns 23
int iNumber = System.Convert.ToInt32(dNumber);
}
catch (System.OverflowException exp) {
System.Console.WriteLine("Overflow in double to int conversion.");
}
// Returns True
boolean bNumber = System.Convert.ToBoolean(dNumber);
// Returns "23.15"
String strNumber = System.Convert.ToString(dNumber);
try {
// Returns '2'
char chrNumber = System.Convert.ToChar(strNumber.get_Chars(0));
}
catch (System.ArgumentNullException exp) {
System.Console.WriteLine("String is null");
}
catch (System.FormatException exp) {
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 exp) {
System.Console.WriteLine("String is null.");
}
catch (System.FormatException exp) {
System.Console.WriteLine(("String does not consist of an "
+ "optional sign followed by a series of digits."));
}
catch (System.OverflowException exp) {
System.Console.WriteLine("Overflow in string to int conversion.");
}
System.Console.WriteLine("Your integer as a double is {0}",
System.Convert.ToString(System.Convert.ToDouble(newInteger)));
下列程式碼範例示範 Convert 類別 (Class) 中的數個轉換方法。
' 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
'
// 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
*/
// Sample for the Convert class summary.
using namespace System;
int 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 = Decimal(6.0);
String^ xString = "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( "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
*/
System..::.Object
System..::.Convert
這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。並非所有的執行個體成員都是安全執行緒。
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360
.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求。
.NET Framework
支援版本:3.5、3.0、2.0、1.1、1.0
.NET Compact Framework
支援版本:3.5、2.0、1.0
XNA Framework
支援版本:2.0、1.0
參考