2017-03-19 5 views
-1

Ich bin neu in C# also verzeih mir, aber ich will nur wissen, warum muss ich Int in Int32 konvertieren?C# int & int32 Deklaration

Zum Beispiel deklariere ich lowerRange als int, aber später, wenn ich Benutzereingaben lesen muss, muss ich es in int32 umwandeln, sonst gibt es mir eine Fehlermeldung, dass ich "Typ 'String' implizit nicht konvertieren kann" Int

ODER ich nehme an, dass ich konvertieren muss, weil der Benutzer eine Zeichenfolge eingibt, und ich es in ein int konvertieren muss, was mich in diesem Fall fragt, warum ich lowerRange als int deklarieren muss erste Linie?

int lowerRange; 
... 
lowerRange = Convert.ToInt32(Console.ReadLine()); 
+0

'int' hat Nummernmerkmale. Sie können numerische Operationen für "int" ausführen, während dies für "string" nicht möglich ist. Ja, Benutzereingabe ist string. –

+0

"Warum muss ich int in int32 konvertieren" - es ist nicht wirklich möglich, diese Frage zu beantworten, da sie unterschiedliche Namen für den gleichen Typ sind und in C# keine Konvertierung zwischen ihnen erfolgen kann ... Konvertieren von String in int on Andererseits ist in ein oder zwei Hunderte von Fragen abgedeckt ... –

Antwort

8

Console.ReadLine() die Methode gibt ein string, die b braucht e wird geparst und in eine ganze Zahl konvertiert (mit Convert.ToInt32), wenn Sie es der lowerRange Integer-Variable zuweisen möchten.

Also im Grunde haben Sie dies:

int lowerRange; 
... 
string userInput = Console.ReadLine(); 
lowerRange = Convert.ToInt32(userInput); 

Beachten Sie auch, dass der Grund, warum die ReadLine Methode einen String zurückgibt, da der Anwender nichts als Eingabe eingeben. So könnten Sie überprüfen möchten, dass der Benutzer eine gültige Nummer mit der TryParse Methode eingegeben hat, da sonst die ToInt32 Methode wird eine Ausnahme werfen:

string userInput = Console.ReadLine(); 
if (int.TryParse(userInput, out lowerRange)) 
{ 
    // The user entered a valid integer you can use the lowerRange variable here 
} 
else 
{ 
    Console.WriteLine("Please enter a valid number"); 
} 
+0

Ich wäre ein bisschen konservativ mit 'TryParse', weil es eine '0' zurückgibt, wenn ungültige Zeichenfolge eingegeben wurde, die zu unerwartetem Verhalten führen kann, wenn '0' bedeutete etwas in den kommenden Phasen. Mit 'try' /' catch' haben Sie mehr Kontrolle darüber, was zu tun ist. – Everyone

0

Ich habe zu konvertieren es sonst int32 es gibt mir eine Fehlermeldung, dass ich „nicht implizit Typ 'string' zu 'int' konvertieren.

Da Console.Readline() return Zeichenfolge, die vom Benutzer eingegeben wird.

ODER ich nehme an, dass ich konvertieren muss, weil der Benutzer eine Zeichenfolge eingibt, und ich muss es in ein int konvertieren, was mich in diesem Fall fragt, warum ich LowerRange als int das erste deklarieren muss Ort?

Sie müssen lowerRange nicht als ganze Zahl deklarieren, wenn Sie sie als Zeichenfolge verwenden möchten. Aber wenn Sie es als Integer verwenden möchten, müssen Sie es konvertieren (mit Convert Klasse).