Поделиться через


Преобразование строк в типы данных .NET

Если нужно преобразовать строку в тип данных .NET, используйте метод XmlConvert, соответствующий требованиям приложения. Список всех методов преобразования, доступных в классе XmlConvert, можно найти в XmlConvert.

Строка, возвращаемая методом ToString, представляет строковую версию переданных ему данных. Кроме того, существует несколько типов .NET, которые преобразуются с помощью класса XmlConvert, но не используют методы класса System.Convert. Класс XmlConvert следует спецификации типа данных XSD и содержит тип данных, для которого может выполняться сопоставление XmlConvert.

В приведенной ниже таблице перечислены типы данных .NET и строковые типы, возвращаемые с помощью сопоставления типа данных XSD. System.Convert не поддерживает обработку этих типов .NET.

Тип .NET Возвращаемая строка
Логический "true", "false"
Single.PositiveInfinity "INF"
Single.NegativeInfinity "-INF"
Double.PositiveInfinity "INF"
Double.NegativeInfinity "-INF"
Дата/время Используется формат «гггг-ММ-ддТЧЧ:мм:ссzzzzzz» и его сокращенные версии.
Временной диапазон Используется формат PnYnMnTnHnMnS, то есть значение P2Y10M15DT10H30M20S соответствует длительности в 2 года, 10 месяцев, 15 дней, 10 часов, 30 минут и 20 секунд.

Примечание.

Если любой из типов .NET, представленных в таблице, преобразуется в строку с использованием метода ToString, возвращаемая строка имеет не базовый тип, а тип строки XSD.

Типы значений DateTime и Timespan отличаются тем, что DateTime представляет момент времени, а TimeSpan — интервал времени. Форматы DateTime и Timespan приведены в спецификации типов данных схемы XML (XSD). Например:

Dim writer As New XmlTextWriter("myfile.xml", Nothing)  
Dim [date] As New DateTime(2001, 8, 4)  
writer.WriteElementString("Date", XmlConvert.ToString([date]))  
XmlTextWriter writer = new XmlTextWriter("myfile.xml", null);  
DateTime date = new DateTime (2001, 08, 04);  
writer.WriteElementString("Date", XmlConvert.ToString(date));  

Выходные данные

<Date>2001-08-04T00:00:00</Date>.

В следующем примере кода целочисленное значение преобразуется в строку.

Dim writer As New XmlTextWriter("myfile.xml", Nothing)  
Dim value As Int32 = 200  
writer.WriteElementString("Number", XmlConvert.ToString(value))  
XmlTextWriter writer = new XmlTextWriter("myfile.xml", null);  
Int32 value = 200;  
writer.WriteElementString("Number", XmlConvert.ToString(value));  

Выходные данные

<Number>200</Number>

Однако если строка преобразуется в тип Boolean, Single или Double, возвращаемый тип .NET не совпадает с типом, который возвращается при использовании класса System.Convert.

Преобразование строки в тип Boolean

В следующей таблице показано, какие типы создаются для заданных входных строк при преобразовании строки в значение Boolean с помощью метода ToBoolean.

Допустимый строковый входной параметр Тип выходных данных .NET
"true" Boolean.True
"1" Boolean.True
"false" Boolean.False
"0" Boolean.False

Например, пусть задан следующий XML-код.

Входные данные

<Boolean>true</Boolean>  
<Boolean>1</Boolean>

Обе записи обрабатываются следующим кодом, где bvalue имеет значение System.Boolean.True.

Dim bvalue As Boolean = _  
   XmlConvert.ToBoolean(reader.ReadElementString())  
Console.WriteLine(bvalue)  
Boolean bvalue = XmlConvert.ToBoolean(reader.ReadElementString());  
Console.WriteLine(bvalue);  

Преобразование строки в тип Single

В следующей таблице показано, какие типы создаются для заданных входных строк при преобразовании строки в значение Single с помощью метода ToSingle.

Допустимый строковый входной параметр Тип выходных данных .NET
"INF" Single.PositiveInfinity
"-INF" Single.NegativeInfinity

Преобразование строки в тип Double

В следующей таблице показано, какие типы создаются для заданных входных строк при преобразовании строки в значение Double с помощью метода ToDouble.

Допустимый строковый входной параметр Тип выходных данных .NET
"INF" Double.PositiveInfinity
"-INF" Double.NegativeInfinity

Следующий код записывает строку <Infinity>INF</Infinity>:

Dim value As Double = Double.PositiveInfinity  
writer.WriteElementString("Infinity", XmlConvert.ToString(value))  
Double value = Double.PositiveInfinity;  
writer.WriteElementString("Infinity", XmlConvert.ToString(value));  

См. также