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>、または単に同じ構造体。

次に、コードはいくつかのifを実行してキーを作成し、辞書からタプルまたは構造体のリストを取得し、リストを実行して各オブジェクトに適切な処理を実行します。

于 2011-07-13T13:22:48.250 に答える