Załóżmy, że chciał przekazać zero lub txtNumerator.Text sposobu M. Jak to zrobić?
można powiedzieć:
string argument;
if (txtNumerator.Text == "")
{
argument = "0";
}
else
{
argument = txtNumerator.Text;
}
M(argument);
Albo można powiedzieć
M(txtNumerator.Text == "" ? "0" : txtNumerator.Text);
Ten ostatni jest krótsze i łatwiejsze do odczytania.
Im większa Chodzi o to, że oświadczenia są użyteczne dla ich skutków ubocznych i wyrażeń są użyteczne dla ich wartości. Jeśli chcesz kontrolować, który z dwóch efektów ubocznych ma miejsce, użyj instrukcji "jeśli". Jeśli chcesz kontrolować, która wartość zostanie wybrana z dwóch możliwości, rozważ użycie wyrażenia warunkowego.
UPDATE:
Jenny pyta, dlaczego nie po prostu to zrobić?
if (txtNumerator.Text == "")
{
M("0");
}
else
{
M(txtNumerator.Text);
}
To dobrze, jeśli jest tylko jeden warunek do sprawdzenia. Ale co jeśli, powiedzmy, cztery? Obecnie istnieje szesnaście możliwości i pisanie „if” za to dostaje niechlujny co najmniej:
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.
Zamiast tego można po prostu powiedzieć:
M(Text1.Text == "" ? "1" : Text1.Text,
Text2.Text == "" ? "2" : Text2.Text,
Text3.Text == "" ? "3" : Text3.Text,
Text4.Text == "" ? "4" : Text4.Text);
Myślę, że ci się spodoba? operator. – iandisme
iandisme @ zabijasz mnie –
Zwięzłość jest dobry –