Hoppa till innehåll

Sida 1 av 1
  • Du kan inte starta en ny tråd
  • Du kan inte svara i tråden

Convert. ToInt32

#1
Medlem är utloggad   Macky 

  • Aktiv
  • PipPipPip
  • Grupp: Medlemmar
  • Inlägg: 106
  • Gick med: 2009-02-24
  • Ort:KISTA

Skrivet 26 jun 2012, 13:20

Hej
Jag undrar varför man måste använda sig av conver.ToInt32 (); för att kunna hantera int variabler i C#. I C man deklarerar int, float, etc.. variabler utan att använda någon extra funktion.
0

#2
Medlem är utloggad   .M 

  • Stormuffin
  • PipPipPipPipPip
  • Grupp: Medlemmar
  • Inlägg: 2 713
  • Gick med: 2005-04-04
  • Ort:Stockholm

Skrivet 26 jun 2012, 13:50

Det beror på situationen. För att göra om en sträng till heltal så får du använda antagligen Convert.ToInt32 eller Int32.TryParse. Men för att göra om en double till int så kan man göra en vanlig cast.
double d = 40.0;
int i = (int)d;
Console.Out.Write(i);

Det beror helt enkelt på vad double i det här fallet innehåller. Eftersom det innehåller ett heltal som får plats i en Int32 så går det bra.

Men detta fall går mindre bra.
double d = double.MaxValue;
int i = (int)d;
Console.Out.Write(i);

Det är för att en double kan hålla större tal än int. Då kommer du få några "lite roliga" resultat. Så metoden för att konvertera till en int kan skilja sig beroende på mellan vilka typer du vill växla mellan och vad dessa innehåller.

Fast jag är osäker på att Convert klarar av att hantera siffror som är större än Int32.MaxValue.
0

#3
Medlem är utloggad   Macky 

  • Aktiv
  • PipPipPip
  • Grupp: Medlemmar
  • Inlägg: 106
  • Gick med: 2009-02-24
  • Ort:KISTA

Skrivet 26 jun 2012, 21:02

Tack för ditt svar!
Jag deklarerade int variabler i min Main funktion för att jag visste att variabler kommer att innehålla bara siffror och jag visste att jag kommer att jobba bara med siffror men jag fick fel och programmet ville att jag skulle konvertera dem. här är lite exempel på koden:

static void Main(string[] args)
        {
            
                int val,  eat;
                do
                {
                        Console.WriteLine(" Vad önskas?\n 1- Korv\n 2- Pizza\n 3- Glass");
                        val = Convert.ToInt32(Console.ReadLine());
                switch (val)
                {
                    case 1:
                        Console.WriteLine(" Du valde Korv\n Välja en alternativ\n 1- föratt  Äta här\n 2- för att Ta med");
                        eat = Convert.ToInt32(Console.ReadLine());

0

#4
Medlem är utloggad   .M 

  • Stormuffin
  • PipPipPipPipPip
  • Grupp: Medlemmar
  • Inlägg: 2 713
  • Gick med: 2005-04-04
  • Ort:Stockholm

Skrivet 27 jun 2012, 16:17

Eftersom Console.ReadLine kan läsa in samtliga tecken som finns på tangentbordet så vet ju .NET inte på förhand att du enbart vill använda siffror. Så därför måste du vara tydlig och använda en Convert.ToInt32.

Och det är aldrig fel att vara tydlig när man programmerar.
1

#5
Medlem är utloggad   Macky 

  • Aktiv
  • PipPipPip
  • Grupp: Medlemmar
  • Inlägg: 106
  • Gick med: 2009-02-24
  • Ort:KISTA

Skrivet 27 jun 2012, 16:53

Tack så mycket.
0
Sida 1 av 1
  • Du kan inte starta en ny tråd
  • Du kan inte svara i tråden

1 besökare läser just nu den här tråden, varav 0 medlem(mar) och 1 gäst(er)
 
 
Senast obesvarade trådar
Prenumerera på nyheter

Missa inte våra nya
smarta nyhetsbrev

Läs mer om nyhetsbreven här!
Beställ direkt:


Extreme
PC för Alla-nätverket