När du deklarerar en ny variabel i C#, initialiserar du vanligtvis den med en viss datatyp. Detta kan vara ett heltal, decimaltal, booleskt tal, sträng eller annan datatyp.
Du kan konvertera ett värde från en datatyp till en annan. Om du till exempel konverterar en sträng till ett heltal måste du först analysera värdet. Här är några olika sätt att konvertera och analysera värden.
Varför behöver du konvertera eller analysera data?
Ett exempel på när du kan behöva analysera data är om du begär användarinmatning i en C#-konsolapplikation:
Trösta. Skrivlinje("Ange din ålder:");
sträng lön = Konsol. ReadLine();
I det här fallet kommer användaren att ange ett heltalsvärde, men applikationen lagrar det som en sträng som standard. Om du försökte använda strängvärdet i några beräkningar skulle du få ett kompileringsfel:
Ett annat skäl att konvertera datatyper är att komma åt vissa metoder som endast är tillgängliga för en specifik datatyp. Till exempel innehåller DateTime-strukturen en funktion som låter dig lägga till minuter. Om du istället använde en sträng skulle du inte ha tillgång till metoden:
Du kanske också vill konvertera ett värde till en annan datatyp om du behövde följa datatypstrukturen för en klass skapad i C# eller a struktur i C#.
Hur man konverterar och analyserar olika datatyper
Du kan analysera olika datatyper som heltal, dubblar, booleska typer och typer av datum och tid.
Strängar till heltal
För att konvertera en sträng till ett heltal, använd metoden Parse():
sträng strInt = "45";
int int32 = Int32.Parse (strInt);
Trösta. WriteLine (int32); // utgång: 45
Du kan också analysera strängen i heltal av olika bitstorlekar, till exempel Int16, Int32 eller Int64.
int int16 = Int16.Parse (strInt);
Trösta. WriteLine (int16); // utgång: 45
Om du använder metoden Parse() ska du se till att strängvärdet representerar ett heltal. Om du försöker analysera ett icke-heltalsvärde som "Hej", kommer du att få ett analysfel vid körning.
string invalidString = "Hallå";
int invalidResult = Int32.Parse (invalidString);
Du kan också använda metoden TryParse() för att fånga upp eventuella undantag som kan uppstå vid analys:
int tryParseResult = 0;
om (Int32.TryParse(invalidString, utprovaParseResult))
{
Trösta.Skrivlinje(provaParseResult);
}
annan
{
Trösta. Skrivlinje("Något gick fel");
}
För att konvertera ett heltal tillbaka till en sträng, använd metoden ToString():
sträng intString = 45.ToString();
Trösta. WriteLine (intString); // utgång: 45
Strängar till dubbel
Att analysera en sträng till en dubbel är mycket likt att analysera en till ett heltal. Använd metoden Parse() från klassen Double:
sträng strDouble = "90.5";
dubbel d = Dubbel. Parse (strDouble);
Trösta. WriteLine (d); // utgång: 90,5
Som med heltal kan du också använda metoden TryParse() för att fånga upp eventuella analysfel som kan uppstå:
string invalidStringDouble = "Hallå";
dubbel tryParseDouble = 0;
om (Dubbel.TryParse(invalidStringDouble, utprovaParseDouble))
{
Trösta.Skrivlinje(provaParseDouble);
}
För att konvertera en dubbel tillbaka till ett heltal, använd metoden ToString():
dubbel dDubbel = 90.5;
sträng dString = dDouble. Att stränga();
Trösta. WriteLine (dString); // utgång: 90,5
Dubblar till heltal
Du kan använda casting för att konvertera en dubbel till ett heltal. Eftersom ett heltal bara lagrar ett heltal, kommer konverteringen att ta bort decimalerna. Om du till exempel konverterar "12.34" lagras bara värdet "12".
dubbel dVärde = 12.34;
int iValue = (int)dValue;
Trösta. WriteLine (iValue); // utgång: 12
Du kan också kasta tillbaka ett heltal till en dubbel:
dValue = (dubbel)jag värdesätter;
Trösta. WriteLine (dValue); // utgång: 12
Strängar och booleska värden
För att konvertera en sträng till en boolean, använd antingen metoden Parse() eller ToBoolean():
string stringBool = "Sann";
bool b = bool. Parse (stringBool);// eller
b = Konvertera. ToBoolean (stringBool);
Trösta. WriteLine (b); // output: sant
För att konvertera en boolesk tillbaka till en sträng, använd metoden ToString():
sträng strTrue = Sann.Att stränga();
sträng strFalse = falsk.Att stränga();
Heltal och booleska värden
För att konvertera ett heltal till ett booleskt värde, använd metoden ToBoolean() för att konvertera antingen en "1" eller "0" till dess ekvivalenta booleska värde. Värdet "1" konverteras till "true" medan "0" konverteras till "false":
int falseBit = 0;
int trueBit = 1;
Trösta. WriteLine (Konvertera. ToBoolean (falseBit)); // output: false
Trösta. WriteLine (Konvertera. ToBoolean (trueBit)); // output: sant
Du kan också skicka ett heltalsvärde annat än "1" eller "0" till ToBoolean()-metoden. Som standard kommer metoden fortfarande att returnera "true":
int invalidBit = 8;
Trösta. WriteLine (Konvertera. ToBoolean (invalidBit)); // output: sant
För att konvertera ett booleskt tillbaka till ett heltal, använd Konvertera. ToInt32() metod. Konvertering av "true" kommer att returnera en "1", och omvandling av "false" returnerar en "0".
bool iBool = Sann;
int bInt = Konvertera. ToInt32(iBool);
Trösta. WriteLine (bInt); // utgång: 1
Strängar till DateTime
För att analysera en sträng till datetime-format, använd DateTime. Parse() metod:
DateTime newDateTime = DateTime. Analysera("01/01/2018 00:00:00");
Trösta. WriteLine (newDateTime); // output: 01/01/2018 00:00:00
För att konvertera en datetime tillbaka till en sträng, använd ToString()-metoden:
DateTime dt = ny Datum Tid(2018, 1, 1);
sträng dtString = dt. Att stränga();
Trösta. WriteLine (dtString); // output: 01/01/2018 00:00:00
Analysera värden till olika datatyper
Nu förstår du hur man konverterar värden från en datatyp till en annan. Det här är inte de enda konverteringarna där ute, så läs gärna mer om andra datatyper i C#.
Du kan också utforska hur andra datatyper fungerar på andra språk, till exempel JavaScript.