Der schnellste Weg, um zu überprüfen, ob eine Zeichenfolge analysiert werden kann

Ich analysiere CSV-Dateien in Listen von Objekten mit stark typisierten Eigenschaften. Dazu wird jeder Zeichenfolgenwert aus der Datei in eine analysiertIConvertible Art (int, decimal, double, DateTimeusw) mitTypeDescriptor.

Ich benutze einetry catch um Situationen zu behandeln, in denen das Parsen fehlschlägt. Die genauen Details, wo und warum diese Ausnahme auftritt, werden dann zur weiteren Untersuchung protokolliert. Unten ist der eigentliche Parsing-Code:

try
{
    parsedValue = TypeDescriptor.GetConverter(type).ConvertFromString(dataValue);
}
catch (Exception ex)
{
    // Log failure
}

Problem:

Wenn die Werte erfolgreich analysiert wurden, ist der Prozess schnell. Beim Parsen von Daten mit vielen ungültigen Daten kann der Vorgang Tausende Male langsamer sein (da die Ausnahme abgefangen wird).

Ich habe dies mit dem Parsen getestetDateTime. Dies sind die Leistungszahlen:

Erfolgreiches Parsen: Durchschnitt von32 Zecken per parseAnalyse fehlgeschlagen: Durchschnitt von146296 Zecken per parse

Das ist mehr als 4500 mal langsamer.

Frage:

Kann ich überprüfen, ob ein String-Wert erfolgreich analysiert werden kann, ohne meinen teuren zu verwenden?try catch Methode? Oder gibt es vielleicht eine andere Möglichkeit, dies zu tun?

EDIT: Ich muss verwendenTypeDescriptor (und nichtDateTime.TryParse), da der Typ zur Laufzeit ermittelt wird.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage