Frage

In .Net Lesen Sie einen string-Wert in einen anderen Datentyp verwenden entweder <datatype>.parse oder Convert.To<DataType>.

Ich bin nicht vertraut mit den Grundlagen der parse versus konvertieren, so bin ich immer ratlos, wenn Sie gefragt, welches ist besser/schneller/besser geeignet.

Also - welcher Weg ist am besten, in welchen Umständen?

War es hilfreich?

Lösung

Die Convert.ToXXX() Methoden für Objekte, die vielleicht die richtige oder eine ähnliche Art, während .Parse() und .TryParse() speziell für strings:

//o is actually a boxed int
object o = 12345;

//unboxes it
int castVal = (int) 12345;

//o is a boxed enum
object o = MyEnum.ValueA;

//this will get the underlying int of ValueA
int convVal = Convert.ToInt32( o );

//now we have a string
string s = "12345";

//this will throw an exception if s can't be parsed
int parseVal = int.Parse( s );

//alternatively:
int tryVal;
if( int.TryParse( s, out tryVal ) ) {
    //do something with tryVal 
}

Wenn Sie kompilieren, mit der Optimierung flags TryParse ist sehr schnell - es ist der beste Weg, um eine Zahl aus einer Zeichenfolge.Allerdings, wenn Sie haben ein Objekt, möglicherweise ein int oder ein string zu Konvertieren.ToInt32 schneller.

Andere Tipps

Hier ist eine Antwort für Sie:

http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=77428

Obwohl ich denke, dass in modernen Versionen .NET, das beste, was zu tun ist, verwenden TryParse in jedem Fall, wenn es irgendwelche Zweifel, dass die Konvertierung funktioniert.

Ich bin ein großer fan von TryParse -, da es spart Ihnen eine Menge Kopfschmerzen Fehler fangen, wenn es gibt eine chance, den Wert, den du gehst um zu analysieren, ist nicht der geeignete Typ.

Meine Bestellung ist in der Regel:

  • Parse (wenn ich sicher sein kann, wird der Wert, die Rechte Art, und ich versuche, dies sicherzustellen)
  • TryParse (wenn ich nicht sicher sein kann, was passiert, wenn der Benutzer eine Eingabe beteiligt ist, oder Eingaben von einem system, das Sie nicht kontrollieren können)
  • Konvertieren (was ich denke ich nicht verwendet habe, da ich begann mit Parse und TryParse, aber ich könnte falsch sein)

Es ist auch die DirectCast Methode sollten Sie nur verwenden, wenn Sie sicher sind, welchen Typ das Objekt ist.Es ist schneller, aber keinen angemessenen Kontrollen.Ich benutze DirectCast wenn ich das extrahieren von Werten aus einer schwach typisierten DataTable wenn ich weiß der Typ für jede Spalte.

Wenn du Geschwindigkeit brauchst, ich bin mir ziemlich sicher, dass eine direkte Umwandlung ist der Schnellste Weg.Dass gesagt wird, die ich normalerweise benutze .Analysieren oder .TryParse da ist, scheint die Dinge einfacher zu machen, zu Lesen, und Verhalten sich in vorhersehbarer Weise.

Konvertieren ruft tatsächlich Parse unter der Haube, ich glaube.So gibt es kaum einen Unterschied gibt, und das wirklich einfach zu sein scheint eine Frage des persönlichen Geschmacks.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top