[英]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.