Necesitaba una función que simplemente marca si una cadena se puede convertir a un número entero válido (para la validación del formulario).¿Existe alguna forma mejor de determinar si una cadena puede ser un número entero distinto de try/catch?
Después de buscar, terminé usando una función que tenía desde 2002 que funciona usando C# 1 (abajo).
Sin embargo, me parece que aunque el código siguiente funciona, es un uso indebido de try/catch para usarlo no para detectar un error sino para determinar un valor.
¿Hay alguna forma mejor de hacerlo en C# 3?
public static bool IsAValidInteger(string strWholeNumber)
{
try
{
int wholeNumber = Convert.ToInt32(strWholeNumber);
return true;
}
catch
{
return false;
}
}
Respuesta:
respuesta de Juan a continuación me ayudó a construir la función que estaba buscando sin el try/catch. En este caso, un cuadro de texto en blanco también se considera un "número entero" válida en mi forma:
public static bool IsAValidWholeNumber(string questionalWholeNumber)
{
int result;
if (questionalWholeNumber.Trim() == "" || int.TryParse(questionalWholeNumber, out result))
{
return true;
}
else
{
return false;
}
}
Y long.TryParse para valores de 64 bits también. – devstuff