Mi aplicación lee un archivo de Excel utilizando VSTO y agrega los datos leídos a StringDictionary
. Agrega solo datos que son números con algunos dígitos (1000 1000,2 1000,34 - la coma es un delimitador en los estándares rusos).Double.TryParse o Convert.ToDouble - ¿Qué es más rápido y más seguro?
¿Qué es mejor comprobar si la cadena actual es un número apropiado?
object data, string key; // data had read
try
{
Convert.ToDouble(regionData, CultureInfo.CurrentCulture);
dic.Add(key, regionData.ToString());
}
catch (InvalidCastException)
{
// is not a number
}
o
double d;
string str = data.ToString();
if (Double.TryParse(str, out d)) // if done, then is a number
{
dic.Add(key, str);
}
tengo que usar en lugar de StringDictionary
Dictionary<string, double>
debido a las siguientes cuestiones algoritmo de análisis sintáctico.
Mis preguntas: ¿Qué camino es más rápido? ¿Cuál es más seguro?
¿Y es mejor llamar al Convert.ToDouble(object)
o al Convert.ToDouble(string)
?
FYI, double.TryParse es lo mismo que try {result = double.Parse (s); devolver verdadero; } catch {return false; }. Convert es esencialmente un contenedor para ambos con un montón de sobrecargas. No importa cómo lo hagas. Pero como ha señalado Jon, piense en cómo manejar las malas entradas. –
Doble.TryParse no es lo mismo que double.Parse envuelto en una try..catch. La semántica es la misma, pero la ruta del código es diferente. TryParse primero verifica que la cadena sea un número que usa un Number.TryStringToNumber interno, mientras que Parse asume que ya es un número/doble. –