Partilhar via


Converter cadeias de caracteres em tipos de dados .NET

Se você quiser converter uma cadeia de caracteres em um tipo de dados .NET, use o método XmlConvert que atende aos requisitos do aplicativo. Para obter uma lista de todos os métodos de conversão disponíveis na classe XmlConvert , consulte XmlConvert.

A cadeia de caracteres retornada do método ToString é uma versão de cadeia de caracteres dos dados que são passados. Além disso, existem vários tipos .NET que convertem usando a classe XmlConvert mas eles não usam os métodos na classe System.Convert . A classe XmlConvert segue a especificação de tipo de dados do esquema XML (XSD) e tem um tipo de dados para o qual o XmlConvert pode mapear.

A tabela a seguir lista os tipos de dados .NET e os tipos de cadeia de caracteres retornados usando o mapeamento de tipo de dados do esquema XML (XSD). Esses tipos .NET não podem ser processados usando System.Convert.

Tipo .NET String retornada
Boolean "verdadeiro", "falso"
Single.PositiveInfinity "INF"
Single.NegativeInfinity "-INF"
Double.PositiveInfinity "INF"
Double.NegativeInfinity "-INF"
DateTime O formato é "aaaa-MM-ddTHH:mm:sszzzzzz" e seus subconjuntos.
Timespan Formato é PnYnMnTnHnMnS ou seja, P2Y10M15DT10H30M20S é uma duração de 2 anos, 10 meses, 15 dias, 10 horas, 30 minutos e 20 segundos.

Nota

Se converter qualquer um dos tipos .NET listados na tabela em uma cadeia de caracteres usando o método ToString , a cadeia de caracteres retornada não é o tipo base, mas o tipo de cadeia de caracteres XSD (esquema XML).

O tipo de valor DateTime e Timespan difere na medida em que um DateTime representa um instante no tempo, enquanto um TimeSpan representa um intervalo de tempo. Os formatos DateTime e Timespan são especificados na especificação de tipos de dados XSD (XML Schema). Por exemplo:

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));  

Saída

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

O código a seguir converte um inteiro em uma cadeia de caracteres:

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));  

Saída

<Number>200</Number>

No entanto, se você estiver convertendo uma cadeia de caracteres para Boolean, Single ou Double, o tipo .NET retornado não é o mesmo que o tipo retornado ao usar a classe System.Convert .

String para Boolean

A tabela a seguir mostra que tipo é gerado para determinadas cadeias de caracteres de entrada, ao converter uma cadeia de caracteres em Boolean usando o método ToBoolean .

Parâmetro de entrada de cadeia de caracteres válido Tipo de saída .NET
"true" Boolean.True
"1" Boolean.True
"falso" Boolean.Falso
"0" Boolean.Falso

Por exemplo, dado o seguinte XML:

Entrada

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

Ambos podem ser entendidos pelo código a seguir, e bvalue é System.Boolean.True:

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

String para Single

A tabela a seguir mostra que tipo é gerado para as cadeias de caracteres de entrada fornecidas, ao converter uma cadeia de caracteres em um Single usando o método ToSingle.

Parâmetro de entrada de cadeia de caracteres válido Tipo de saída .NET
"INF" Single.PositiveInfinity
"-INF" Single.NegativeInfinity

Corda para Duplo

A tabela a seguir mostra que tipo é gerado para as cadeias de caracteres de entrada fornecidas, ao converter uma cadeia de caracteres em um Single usando o método ToDouble.

Parâmetro de entrada de cadeia de caracteres válido Tipo de saída .NET
"INF" Double.PositiveInfinity
"-INF" Double.NegativeInfinity

O código a seguir grava <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));  

Consulte também