这段代码可以简化吗?

时间:2012-04-26 13:23:49

标签: c#

这段代码很多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 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:2)

您可以使用ternary if then else运算符

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

这不是更高效,但会使用更少的代码行。

答案 2 :(得分: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);

答案 3 :(得分:0)

您是否安装了重塑者?我认为你会通过使用JetBrain的 Reshaper 扩展来为VS找到一个很好的(未来)帮助。依靠它,它是.NET开发人员的优秀必备工具。