826 Stimmen

Wie kann ich String in Int konvertieren?

Ich habe eine TextBoxD1.Text und ich möchte sie in eine int um sie in einer Datenbank zu speichern.

Wie kann ich das tun?

2 Stimmen

Gibt es einen bestimmten Nachteil bei der Verwendung von Convert.ToInt32()

1309voto

Andrew Hare Punkte 332190

Versuchen Sie dies:

int x = Int32.Parse(TextBoxD1.Text);

oder besser noch:

int x = 0;

Int32.TryParse(TextBoxD1.Text, out x);

Außerdem, da Int32.TryParse gibt eine bool können Sie seinen Rückgabewert verwenden, um Entscheidungen über die Ergebnisse des Parsing-Versuchs zu treffen:

int x = 0;

if (Int32.TryParse(TextBoxD1.Text, out x))
{
    // you know that the parsing attempt
    // was successful
}

Falls Sie neugierig sind, der Unterschied zwischen Parse y TryParse lässt sich am besten wie folgt zusammenfassen:

Die TryParse-Methode ist wie die Methode Parse Methode, außer dass die TryParse-Methode keine Ausnahme auslöst, wenn die Konvertierung fehlschlägt. Sie eliminiert die Notwendigkeit, die Ausnahmebehandlung zu verwenden, um auf eine FormatException zu testen, wenn dass s ungültig ist und nicht erfolgreich geparst werden kann. - MSDN

4 Stimmen

Was ist, wenn die Ganzzahl 64 Bit ist oder wie "aslkdlksadjsd" aussieht? Ist dies immer noch sicher?

6 Stimmen

@Jonny Int64.Parse() . Wenn die Eingabe nicht int ist, erhalten Sie eine Execption und einen Stack-Trace mit Int64.Parse oder den booleschen False con Int64.TryParse() Sie brauchen also eine if-Anweisung, etwa if (Int32.TryParse(TextBoxD1.Text, out x)) {} .

1 Stimmen

Sie könnten auch versuchen, die Variable im TryParse zu initialisieren, wenn sie nur innerhalb der Erfolgsbedingung verwendet werden soll. z.B.: Int32.TryParse(TextBoxD1.Text, out int x))

89voto

Babak Naffas Punkte 11938
Convert.ToInt32( TextBoxD1.Text );

Verwenden Sie diese Option, wenn Sie sicher sind, dass der Inhalt des Textfelds ein gültiger int . Eine sicherere Option ist

int val = 0;
Int32.TryParse( TextBoxD1.Text, out val );

Dadurch erhalten Sie einen Standardwert, den Sie verwenden können. Int32.TryParse gibt auch einen booleschen Wert zurück, der angibt, ob es geparst werden konnte oder nicht, so dass Sie es sogar als Bedingung für eine if Erklärung.

if( Int32.TryParse( TextBoxD1.Text, out val ){
  DoSomething(..);
} else {
  HandleBadInput(..);
}

1 Stimmen

-1 RE. "Damit erhalten Sie einen Standardwert, den Sie verwenden können." Wenn Sie val meinen, müssen Sie mit Problemen rechnen: "Dieser Parameter wird uninitialisiert übergeben; jeder Wert, der ursprünglich in result geliefert wurde, wird überschrieben." [Ref. docs.microsoft.com/de-us/dotnet/api/ ]

11 Stimmen

Vor 10 Jahren entschuldige ich mich.

0 Stimmen

@BabakNaffas & @PeterMortensen - Ich habe versucht Convert.ToInt32(text) und ich bin zuversichtlich, dass da eine Zahl drin ist, aber Visual Studio schreit mich an, dass es Kann den String nicht implizit in int umwandeln . Bitte helfen Sie.

40voto

n8wrl Punkte 19091
int.TryParse()

Es wird nicht ausgelöst, wenn der Text nicht numerisch ist.

0 Stimmen

Dies ist besser als die beiden anderen. Die Benutzereingaben werden wahrscheinlich das falsche Format haben. Diese Methode ist effizienter als die Ausnahmebehandlung, die die anderen erfordern.

0 Stimmen

Ganz genau. Sie gibt false zurück, wenn die Konvertierung fehlgeschlagen ist.

27voto

Andre Kraemer Punkte 2528
int myInt = int.Parse(TextBoxD1.Text)

Eine andere Möglichkeit wäre:

bool isConvertible = false;
int myInt = 0;

isConvertible = int.TryParse(TextBoxD1.Text, out myInt);

Der Unterschied zwischen den beiden ist, dass die erste eine Ausnahme auslösen würde, wenn der Wert in Ihrem Textfeld nicht konvertiert werden kann, während die zweite einfach false zurückgeben würde.

0 Stimmen

Die obige boolesche Variable ist sehr nützlich, wenn wir den umgewandelten Wert zum Vergleich verwenden, z. B. in einer if-Klausel. code int NumericJL; bool isNum = int.TryParse(nomeeJobBand, out NumericJL); if (isNum)//Das ermittelte JL kann in int umgewandelt werden, dann weiter zum Vergleich { if (!(NumericJL >= 6)) { //Nominieren } //Sonst {}}

17voto

Mong Zhu Punkte 21748

Seien Sie vorsichtig bei der Verwendung von Convert.ToInt32() auf einen Saibling! Sie gibt den UTF-16 Code des Zeichens!

Wenn Sie auf die Zeichenkette nur an einer bestimmten Stelle mit der Option [i] Indexierungsoperator, gibt er eine char und nicht ein string !

String input = "123678";
                    ^
                    |
int indexOfSeven =  4;

int x = Convert.ToInt32(input[indexOfSeven]);             // Returns 55

int x = Convert.ToInt32(input[indexOfSeven].toString());  // Returns 7

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X