|
Преобразование типов - класс Convert
(http://msdn.microsoft.com/ru-ru/library/system.convert.aspx)
Библиотека классов платформы.NET Framework
Преобразует значение одного базового типа данных к другому базовому типу данных.
Пространство имен: System
Синтаксис
Язык C#
public static class Convert
Заметки
Этот класс возвращает тип, значение которого эквивалентно значению заданного типа. Поддерживаются следующие базовые типы: Boolean, Char, SByte, Byte, Int16, Int32, Int64, UInt16, UInt32, UInt64, Single, Double, Decimal, DateTime и String.
Существует метод преобразования любого базового типа в любой другой базовый тип. Однако реальный вызов конкретного метода преобразования может выдавать один из четырех разных результатов в зависимости от значения базового типа во время выполнения и от целевого базового типа. Эти четыре результата таковы.
· от типа Char к типу Boolean, Single, Double, Decimal или DateTime;
· от типа Boolean, Single, Double, Decimal или DateTime к типу Char;
· от типа DateTime к любому другому типу кроме String;
· от любого типа кроме String к типу DateTime.
Исключение не выбрасывается, если в результате преобразования числового типа происходит потеря точности (то есть, утрачиваются последние значащие цифры). Однако исключение выбрасывается, если результат превышает максимально допустимое значение для типа, возвращаемого данным методом преобразования.
Например, при преобразовании от типа Double к типу Single может происходить потеря точности, но исключение не выбрасывается. Однако, если значение типа Double слишком велико для представления в виде значения типа Single, выбрасывается исключение переполнения.
Ряд методов поддерживает преобразование массива байтов к типу String или в массив символов Юникод, состоящий из цифровых символов в кодировке Base64, а также обратное преобразование. Данные, выраженные как цифры в кодировке Base64, могут легко быть переданы по каналам данных, поддерживающим передачу только 7-битовых символов.
Некоторые методы данного класса принимают в качестве параметра объект, реализующий интерфейс IFormatProvider. В этом параметре могут быть переданы используемые при выполнении преобразования сведения об особенностях форматирования, связанных с языком и региональными параметрами. Базовые типы значений игнорируют этот параметр, но он может учитываться любым пользовательским типом, реализующим интерфейс IConvertible.
Дополнительные сведения о базовых типах значений см. в соответствующем разделе, указанном в подразделе "См. также".
Примеры
В данном примере кода демонстрируются некоторые методы класса Convert, предназначенные для выполнения преобразования, включая методы ToInt32, ToBoolean и ToString.
Язык 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));
В следующем примере кода демонстрируется применение нескольких методов преобразования, входящих в состав класса Convert.
Язык 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
*/
Ссылки
Convert - члены
System - пространство имен
Object
SByte
Int16
Int32
Int64
Byte
UInt16
UInt32
UInt64
Single
Double
Decimal
Boolean
Char
String
Дата добавления: 2015-11-04; просмотров: 24 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
| |