Dela via


Konvertera strängar till .NET-datatyper

Om du vill konvertera en sträng till en .NET-datatyp använder du metoden XmlConvert som passar programkraven. En lista över alla konverteringsmetoder som är tillgängliga i klassen XmlConvertXmlConvert finns i .

Strängen som returneras från metoden ToString är en strängversion av de data som skickas in. Dessutom finns det flera .NET-typer som konverterar med klassen XmlConvert , men de använder inte metoderna i klassen System.Convert . Klassen XmlConvert följer specifikationen för XML-schemadatatyp (XSD) och har en datatyp som XmlConvert kan mappas till.

I följande tabell visas .NET-datatyper och de strängtyper som returneras med hjälp av xml-schemadatatypmappning (XSD). Dessa .NET-typer kan inte bearbetas med System.Convert.

.NET-typ Sträng returnerad
Booleskt "true", "false"
Single.PositiveInfinity "INF"
Single.NegativeInfinity "-INF"
Double.PositiveInfinity "INF"
Double.NegativeInfinity "-INF"
Datum/tid Formatet är "åååå-MM-ddTHH:mm:sszzzzzz" och dess delmängder.
Tidsintervall Formatet är PnYnMnTnHnMnS som P2Y10M15DT10H30M20S är en varaktighet på 2 år, 10 månader, 15 dagar, 10 timmar, 30 minuter och 20 sekunder.

Kommentar

Om du konverterar någon av de .NET-typer som anges i tabellen till en sträng med metoden ToString är den returnerade strängen inte bastypen, utan strängtypen XML-schema (XSD).

Värdetypen DateTime och Timespan skiljer sig åt eftersom en DateTime representerar ett ögonblick i tiden, medan en TimeSpan representerar ett tidsintervall. Formaten DateTime och Timespan anges i specifikationen för XML-schemadatatyper (XSD). Till exempel:

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

Output

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

Följande kod konverterar ett heltal till en sträng:

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

Output

<Number>200</Number>

Men om du konverterar en sträng till boolesk, enkel eller dubbel, är .NET-typen som returneras inte samma som den typ som returnerades när klassen System.Convert används.

Sträng till boolesk

I följande tabell visas vilken typ som genereras för de angivna indatasträngarna när du konverterar en sträng till boolesk med hjälp av metoden ToBoolean .

Giltig strängindataparameter .NET-utdatatyp
"true" Boolesk.True
"1" Boolesk.True
"falskt" Boolesk.False
"0" Boolesk.False

Till exempel med följande XML:

Indata

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

Båda kan förstås av följande kod och bvalue är System.Boolean.True:

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

Sträng till enskild

I följande tabell visas vilken typ som genereras för de angivna indatasträngarna när du konverterar en sträng till en Enskild med metoden ToSingle .

Giltig strängindataparameter .NET-utdatatyp
"INF" Single.PositiveInfinity
"-INF" Single.NegativeInfinity

Sträng till dubbel

I följande tabell visas vilken typ som genereras för de angivna indatasträngarna när du konverterar en sträng till en Enskild med metoden ToDouble .

Giltig strängindataparameter .NET-utdatatyp
"INF" Double.PositiveInfinity
"-INF" Double.NegativeInfinity

Följande kod skriver <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));  

Se även