Преобразование строк в типы данных .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));