Conversión de cadenas en tipos de datos de .NET

Si quiere convertir una cadena en un tipo de datos de .NET, use el método XmlConvert que cumple los requisitos de la aplicación. Para obtener una lista de los métodos de conversión disponibles en la clase XmlConvert, vea XmlConvert.

La cadena que devuelve el método ToString es una versión de cadena de los datos que se le pasan. Además, hay varios tipos de .NET que realizan la conversión mediante la clase XmlConvert, pero no usan los métodos de la clase System.Convert. La clase XmlConvert sigue la especificación de tipos de datos de los esquemas XML (XSD) y tiene un tipo de datos que se puede asignar en XmlConvert.

En la tabla siguiente se enumeran los tipos de datos de .NET y los tipos de cadena que se devuelven mediante la asignación de tipos de datos de los esquemas XML (XSD). Estos tipos de .NET no se pueden procesar mediante System.Convert.

Tipo de .NET Cadena devuelta
Booleano "true", "false"
Single.PositiveInfinity "INF"
Single.NegativeInfinity "-INF"
Double.PositiveInfinity "INF"
Double.NegativeInfinity "-INF"
DateTime El formato es "aaaa-MM-ddTHH:mm:sszzzzzz" y sus subconjuntos.
Timespan El formato es PnYnMnTnHnMnS, es decir, P2Y10M15DT10H30M20S corresponde a una duración de 2 años, 10 meses, 15 días, 10 horas, 30 minutos y 20 segundos.

Nota

Si se convierte uno de los tipos de .NET enumerados en la tabla en una cadena mediante el método ToString, la cadena devuelta no será el tipo base, sino el tipo de cadena de esquema XML (XSD).

Los tipos de valor de DateTime y Timespan difieren en que DateTime representa un instante en el tiempo, mientras que TimeSpan representa un intervalo de tiempo. Los formatos de DateTime y Timespan se describen en la especificación de tipos de datos de esquema XML (XSD). Por ejemplo:

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

Salida

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

En el código siguiente se convierte un número entero en una cadena:

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

Salida

<Number>200</Number>

Pero si se convierte una cadena en un tipo Boolean, Single o Double, el tipo de .NET que se devuelve no es el mismo que el devuelto al usar la clase System.Convert.

Conversión de cadenas en Boolean

En la tabla siguiente se muestra qué tipo se genera para las cadenas de entrada dadas al convertir una cadena en Boolean mediante el método ToBoolean.

Parámetro de entrada de cadena válido Tipo de salida de .NET
"true" Boolean.True
"1" Boolean.True
"false" Boolean.False
"0" Boolean.False

Por ejemplo, dado el siguiente código XML:

Entrada

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

El código siguiente puede entender ambas líneas y bvalue es System.Boolean.True:

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

Conversión de cadenas en Single

En la tabla siguiente se muestra qué tipo se genera para las cadenas de entrada dadas, al convertir una cadena en Single mediante el método ToSingle.

Parámetro de entrada de cadena válido Tipo de salida de .NET
"INF" Single.PositiveInfinity
"-INF" Single.NegativeInfinity

Conversión de cadenas en Double

En la tabla siguiente se muestra qué tipo se genera para las cadenas de entrada dadas, al convertir una cadena en Single mediante el método ToDouble.

Parámetro de entrada de cadena válido Tipo de salida de .NET
"INF" Double.PositiveInfinity
"-INF" Double.NegativeInfinity

El código siguiente escribe <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));  

Vea también