Converter cadeias de caracteres em tipos de dados .NET
Se você quiser converter uma cadeia de caracteres para um tipo de dados do .NET, use o método XmlConvert que se adapta aos requisitos do aplicativo. Para obter uma lista de todos os métodos de conversão disponíveis na classe XmlConvert, confira XmlConvert.
A cadeia de caracteres retornada do método ToString é uma versão da cadeia de caracteres dos dados que são passados. Além disso, há vários tipos do .NET que são convertidos usando a classe XmlConvert e, ainda assim, não usam os métodos na classe System.Convert. A classe XmlConvert segue a especificação do tipo de dados XSD (XML Schema) e tem um tipo de dados para o qual o XmlConvert pode ser mapeado.
A tabela a seguir lista os tipos de dados do .NET e os tipos de cadeia de caracteres que são retornados usando o mapeamento do tipo de dados do esquema XML (XSD). Esses tipos do .NET não podem ser processados usando System.Convert.
Tipo .NET | Cadeia de caracteres retornada |
---|---|
Booliano | "true", "false" |
Single.PositiveInfinity | "INF" |
Single.NegativeInfinity | "-INF" |
Double.PositiveInfinity | "INF" |
Double.NegativeInfinity | "-INF" |
Datetime | O formato é "yyyy-MM-ddTHH:mm:sszzzzzz" e seus subconjuntos. |
Timespan | O formato é PnYnMnTnHnMnS isto é, P2Y10M15DT10H30M20S é uma duração de 2 anos, 10 meses, 15 dias, 10 horas, 30 minutos e 20 segundos. |
Observação
Se estiver convertendo algum dos tipos do .NET listados na tabela para uma cadeia de caracteres usando o método ToString, a cadeia de caracteres retornada não será o tipo base, mas o tipo de cadeia de caracteres do esquema XML (XSD).
O tipo de valor DateTime e Timespan diferem porque DateTime representa um momento no tempo, enquanto TimeSpan representa um intervalo de tempo. Os formatos DateTime e Timespan são definidos na especificação dos tipos de dados do esquema XML (XSD). 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 para 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>
Entretanto, se você estiver convertendo uma cadeia de caracteres em Booliano, Simples ou Duplo, o tipo do .NET que é retornado não será igual ao tipo retornado ao usar a classe System.Convert.
String para Boolean
A tabela a seguir mostra qual o tipo gerado para cadeias de caracteres de entradas consideradas, ao converter uma cadeia de caracteres para Boolean usando o método ToBoolean.
Parâmetro de entrada válida de cadeia de caracteres | Tipo de saída do .NET |
---|---|
"true" | Boolean.True |
"1" | Boolean.True |
"false" | Boolean.False |
"0" | Boolean.False |
Por exemplo, considerando o seguinte XML:
Entrada
<Boolean>true</Boolean>
<Boolean>1</Boolean>
Ambos podem ser compreendidos 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 qual o tipo gerado para cadeias de caracteres de entradas consideradas, ao converter uma cadeia de caracteres para Single usando o método ToSingle.
Parâmetro de entrada válida de cadeia de caracteres | Tipo de saída do .NET |
---|---|
"INF" | Single.PositiveInfinity |
"-INF" | Single.NegativeInfinity |
String para Double
A tabela a seguir mostra qual o tipo gerado para cadeias de caracteres de entradas consideradas, ao converter uma cadeia de caracteres para Single usando o método ToDouble.
Parâmetro de entrada válida de cadeia de caracteres | Tipo de saída do .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));