2010-02-10 7 views
5

Me pregunto cómo escribir un número que se debe expresar como una cadena.BestPractice para condiciones con cadenas y números

Por ejemplo:

if (SelectedItem.Value == 0.ToString()) ... 

o

if (SelectedItem.Value == "0") ... 

o

public const string ZeroNumber = "0"; 
if (SelectedItem.Value == _zeroNumber) ... 

o

if (Int.Parse(SelectedItem.Value) == 0) 
+0

WinForms o WebForms? –

+3

@ Asad Butt - ¿Por qué es importante aquí? – Oded

Respuesta

9

para una sola prueba, me gustaría ir personalmente con

if (SelectedItem.Value == "0") 

No tiene ninguna queja, ninguna ceremonia - que dice exactamente lo que estamos tratando de hacer.

Por otro lado, si tengo un valor que debe ser un número, y luego va a reaccionar en base a ese número, que haría uso:

int value; 
// Possibly use the invariant culture here; it depends on the situation 
if (!int.TryParse(SelectedItem.Value, out value)) 
{ 
    // Throw exception or whatever 
} 
// Now do everything with the number directly instead of the string 
1

Uso TryParse.

string value = "123"; 
int number; 
bool result = Int32.TryParse(value, out number); 
if (result) 
{ 
    ... 
2

Si el valor está destinado a ser un número entero, y que es lo que se debe utilizar, naturalmente, para entonces yo analizar a un int - es decir, utilizar el tipo que es más apropiado para el significado de los datos .

Por ejemplo, a menudo las listas desplegables se llenan desde una tabla de búsqueda de bases de datos de todos modos; si eso almacena la clave del elemento como un entero, entonces creo que debería manejarlo como uno solo. Del mismo modo, si la clave del elemento seleccionado se almacena en el db de nuevo, entonces debe convertirse a un int en algún punto de todos modos.

Cuestiones relacionadas