Suponga que desea pasar a cero o txtNumerator.Text a un método M. ¿Cómo hacer eso?
Se podría decir:
string argument;
if (txtNumerator.Text == "")
{
argument = "0";
}
else
{
argument = txtNumerator.Text;
}
M(argument);
O se podría decir
M(txtNumerator.Text == "" ? "0" : txtNumerator.Text);
Este último es más corto y más fácil de leer.
El punto más importante aquí es que declaraciones son útiles por sus efectos secundarios y expresiones son útiles por sus valores . Si lo que quiere hacer es controlar cuál de dos efectos secundarios ocurre, entonces use una declaración "si". Si lo que quieres hacer es controlar qué valor se elige entre dos posibilidades, considera usar una expresión condicional.
ACTUALIZACIÓN:
Jenny se pregunta ¿por qué no hacerlo?
if (txtNumerator.Text == "")
{
M("0");
}
else
{
M(txtNumerator.Text);
}
Eso está bien si solo hay una condición para verificar. Pero, ¿y si hay, digamos, cuatro? Ahora hay dieciséis posibilidades y escribir el "if" para ello se complica por decir lo menos:
if (text1.Text == "")
{
if (text2.Text == "")
{
if (text3.Text == "")
{
if (text4.Text == "")
{
M("1", "2", "3", "4");
}
else
{
M("1", "2", "3", text4.Text);
}
}
else
{
if (text4.Text == "")
{
M("1", "2", text3.Text, "4");
}
else
{
M("1", "2", text3.Text, text4.Text);
}
}
... about fifty more lines of this.
En cambio, sólo puede decir:
M(Text1.Text == "" ? "1" : Text1.Text,
Text2.Text == "" ? "2" : Text2.Text,
Text3.Text == "" ? "3" : Text3.Text,
Text4.Text == "" ? "4" : Text4.Text);
Creo que te gustará? operador. – iandisme
iandisme @ me estás matando –
La brevedad es buena –