4

このコードはたくさんif/elseあり、数行に簡略化できるかどうか知りたいです。コードは完全に正常に機能しますが、より効率的でクリーンな方法が必要です。

if (textBox_naam.Text.Length < 3)
{
   textBox_naam.BackColor = Color.FromArgb(205, 92, 92);
}
else
{
   textBox_naam.BackColor = Color.White;
}

if (textBox_email.Text.Length < 5)
{
   textBox_email.BackColor = Color.FromArgb(205, 92, 92);
}
else
{
   textBox_email.BackColor = Color.White;
}

if (textBox_body.Text.Length < 20)
{
   textBox_body.BackColor = Color.FromArgb(205, 92, 92);
}
else
{
   textBox_body.BackColor = Color.White;
}
4

4 に答える 4

18

あなたの最も簡単な賭け(トリックは含まれていません!)は次のようになります:

SetBackColor(textBox_naam, 3, GOOD_COLOR, BAD_COLOR);
SetBackColor(textBox_email, 5, GOOD_COLOR, BAD_COLOR);
SetBackColor(textBox_body, 20, GOOD_COLOR, BAD_COLOR);

SetBackColor次のように定義されたメソッドを使用します。

public void SetBackColor(TextBox tb, int minLength, Color goodColor, Color badColor)
{
    tb.BackColor = tb.Text.Length < minLength ? badColor : goodColor;
}
于 2012-04-26T13:26:03.923 に答える
2

三項ifthenelse演算子を使用できます

textBox_naam.BackColor = textBox_naam.Text.Length < 3 ? Color.FromArgb(205, 92, 92) : Color.White;

これはこれ以上効率的ではありませんが、使用するコード行が少なくなります。

于 2012-04-26T13:25:45.450 に答える
2

さて、あなたは速記のifステートメントを使うことができます...

Color other=Color.FromArgb(205,92,92);
textBox_naam.BackColor=(textBox_naam.Text.Length<3?other:Color.White);
textBox_email.BackColor=(textBox_email.Text.Length<5?other:Color.White);
textBox_body.BackColor=(textBox_body.Text.Length<20?other:Color.White);
于 2012-04-26T13:28:31.423 に答える
0

Reshaperをインストールしていますか?JetBrainのVS用Reshaper拡張機能を使用すると、すばらしい(将来の)支援が得られると思います。それに応じて、それは.NET開発者にとって素晴らしい必須ツールです。

于 2012-04-26T14:18:57.970 に答える