1

也许这是一个愚蠢的问题,但由于我不是 C# 专家,我认为使用更少的代码行可以更好地编写此函数。

这里是:

    public void chgnav(string wt, string nav)
    {
        if (wt == "enable")
        {
            if (nav == "prev")
            {
                pictureBox7.Visible = true;
                pictureBox9.Visible = false;
            }
            else
            {
                pictureBox8.Visible = true;
                pictureBox10.Visible = false;
            }
        }
        else
        {
            if (nav == "prev")
            {
                pictureBox7.Visible = false;
                pictureBox9.Visible = true;
            }
            else
            {
                pictureBox8.Visible = false;
                pictureBox10.Visible = true;
            }

        }
    }

编辑:谢谢大家,我的赞成票。我得到了我想要的东西。

4

4 回答 4

6
public void chgnav(string wt, string nav)
{
   bool wtEnabled = wt == "enable";
   if (nav == "prev")
   {
      pictureBox7.Visible = wtEnabled;
      pictureBox9.Visible = !wtEnabled;
   }
   else
   {
      pictureBox8.Visible = !wtEnabled;
      pictureBox10.Visible = wtEnabled;
   }
}

编辑:固定

于 2011-07-12T17:48:48.990 回答
6

我认为方法的意图很明确,实现很干净。它可能比您想要的长几行,但是为了几行代码而混淆是我书中的净损失。

我会保持原样。

于 2011-07-12T17:48:55.837 回答
1

这可能有效:

public void chgnav(string wt, string nav)
{
        if (nav == "prev")
        {
            pictureBox7.Visible = (wt=="enable");
            pictureBox9.Visible = (wt!="enable");
        }
        else
        {
            pictureBox8.Visible = (wt=="enable");
            pictureBox10.Visible = (wt!="enable");
        }
}

甚至:

public void chgnav(string wt, string nav)
{
    (nav=="prev" ? pictureBox7 : pictureBox8).Visible = (wt=="enable");
    (nav=="prev" ? pictureBox9 : pictureBox10).Visible = (wt!="enable");
}
于 2011-07-12T17:53:03.123 回答
0

这适用于您拥有的有限范围,但假设它大 10 倍并且有更多输入。

你想要的是一个“真值表”设置。

您有一个字典,其中包含与您的参数相对应的键。

给定参数“isBlue”和“isBig”,您的字典键将是

'ff' //不是蓝色或大

'tf' //蓝色但不大

等等

字典键将您引导到一个值,该值是对象、属性名称及其值的映射。

所以你的地图可能是一个元组列表。其中 Tuple<object, string, object>,或者只是一个相同的结构。

然后你的代码会做一些 ifs 来组合键,从字典中获取元组列表或结构,运行列表以执行适合每个对象的操作。

于 2011-07-13T13:22:48.250 回答