簡體   English   中英

我如何才能使此代碼更優化

[英]how can i make this code more optimized

我如何優化此代碼? 我不喜歡有案例陳述,有沒有辦法我可以改善這段代碼?

protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e)
{ 
    string selVal = ddlFilterResultBy.SelectedValue.ToString().ToLower();

    switch (selVal)
    {
        case "date":
            pnlDate.Visible = true; 
            pnlSubject.Visible = false;
            pnlofficer.Visible = false;
            pnlCIA.Visible = false;
            pnlMedia.Visible = false;
            pnlStatus.Visible = false;                    
            break;

        case "subject":
            pnlDate.Visible = false;
            pnlSubject.Visible = true;
            pnlofficer.Visible = false;
            pnlCIA.Visible = false;
            pnlMedia.Visible = false;
            pnlStatus.Visible = false;
            break;

        case "officer":
            pnlDate.Visible = false;
            pnlSubject.Visible = false;
            pnlofficer.Visible = true;
            pnlCIA.Visible = false;
            pnlMedia.Visible = false;
            pnlStatus.Visible = false;
            break;

        case "status":
            pnlDate.Visible = false;
            pnlSubject.Visible = false;
            pnlofficer.Visible = false;
            pnlCIA.Visible = false;
            pnlMedia.Visible = false;
            pnlStatus.Visible = true;
            break;

        default:
            pnlDate.Visible = false;
            pnlSubject.Visible = false;
            pnlofficer.Visible = false;
            pnlCIA.Visible = false;
            pnlMedia.Visible = false;
            pnlStatus.Visible = false;
            break;
    }
}

很簡單。 您只會根據case選項使一個項目可見,因此只需按如下所示設置可見性即可:

pnlDate.Visible = (selVal == "date"); 
pnlSubject.Visible = (selVal == "subject");
pnlofficer.Visible = (selVal == "officer");
pnlCIA.Visible = false;
pnlMedia.Visible = false;
pnlStatus.Visible = (selVal == "status");    

這比將所有內容都設置為visible = false;更好visible = false; 然后僅顯示您需要的項目,因為這將所有內容僅包含在實際可見性設置的6行代碼中。

其它的辦法:

// set everything to false   
Dictionary<string, type> d = new Dictionary<string, type>()
{
    {"date", pnlDate},
    {"subject", plnSubject},
    {"officer", plnOfficer},
    {"status", plnStatus}
};

d[selVal].Visible = true;
protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e)
            { 
                string selVal = ddlFilterResultBy.SelectedValue.ToString().ToLower();
                        pnlDate.Visible = false;
                        pnlSubject.Visible = false;
                        pnlofficer.Visible = false;
                        pnlCIA.Visible = false;
                        pnlMedia.Visible = false;
                        pnlStatus.Visible = false;
                switch (selVal)
                {
                    case "date":
                        pnlDate.Visible = true;                    
                        break;

                    case "subject":
                        pnlSubject.Visible = true;
                        break;

                    case "officer":
                        pnlofficer.Visible = true;
                        break; 
                    case "status":
                        pnlStatus.Visible = true;
                        break;  
                }

            }

您可以這樣做:

protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e) { 
  string selVal = ddlFilterResultBy.SelectedValue.ToString().ToLower();

  pnlDate.Visible = (selVal == "date");
  pnlSubject.Visible = (selVal == "subject");
  pnlofficer.Visible = (selVal == "officer");
  pnlCIA.Visible = (selVal == "cia");
  pnlMedia.Visible = (selVal == "media");
  pnlStatus.Visible = (selVal == "status");
}

或者,盡管可讀性較差,但這樣會更准確:

protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e) { 
  string selVal = ddlFilterResultBy.SelectedValue.ToString();

  pnlDate.Visible = String.Equals(selVal, "date", StringComparison.OrdinalIgnoreCase);
  pnlSubject.Visible = String.Equals(selVal, "subject", StringComparison.OrdinalIgnoreCase);
  pnlofficer.Visible = String.Equals(selVal, "officer", StringComparison.OrdinalIgnoreCase);
  pnlCIA.Visible = String.Equals(selVal, "cia", StringComparison.OrdinalIgnoreCase);
  pnlMedia.Visible = String.Equals(selVal, "media", StringComparison.OrdinalIgnoreCase);
  pnlStatus.Visible = String.Equals(selVal, "status", StringComparison.OrdinalIgnoreCase);
}

優化和提高可讀性之間是有區別的。 因此,我想您正在考慮提高可讀性,因為這里實際上並不需要優化。 這里沒有算法可以調整,以使它在相當長的時間內變得更快。

答案1和2將是我提高可讀性的選擇

我認為您需要在這里使用tabcontrol

如果您不喜歡這些標簽,只需隱藏它們,然后通過代碼對頁面進行索引即可。

優點是您可以在設計時編輯和查看GUI。

它將易於維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM