gpt4 book ai didi

c# - 替代 if..else 语句

转载 作者:行者123 更新时间:2023-11-30 20:02:24 25 4
gpt4 key购买 nike

我在数据库中有一个表,其中包含一堆不同的控件。在我的 Page_Init 方法中,我需要根据传入的 Session 变量加载适当的控件。有没有比使用一大堆 if..else 语句更好的方法来做到这一点?我有大约 15 到 20 个可能的不同场景,所以我不想写 20 个 if..else 语句。非常感谢任何帮助!

标题为“值”的包含三列的数据表:(ID、名称、描述):

ID | Name | Description
-------------------
1 | A | First
2 | B | Second
3 | C | Third

这是我的代码:

ControlOne c1;
ControlTwo c2;
ControlThree c3;

protected void Page_Init(object sender, EventArgs e)
{
DataSet DS = Client.GetInformation(Session["Number"].ToString());
DataRow DR = DS.Tables["Value"].Rows[0];

if (DR["Name"].ToString() == "A" && DR["Description"].ToString() == "First")
{
c1 = (ControlOne)LoadControl("~/ControlOne.ascx");
panel1.Controls.Add(c1);
}
else if (DR["Name"].ToString() == "B" && DR["Description"].ToString() == "Second")
{
c2 = (ControlTwo)LoadControl("~/ControlTwo.ascx");
panel1.Controls.Add(c2);
}
else if (DR["Name"].ToString() == "C" && DR["Description"].ToString() == "Third")
{
c3 = (ControlThree)LoadControl("~/ControlThree.ascx");
panel1.Controls.Add(c3);
}
else if... //lists more scenarios here..
}

最佳答案

你可以这样做:

var controlsToLoad = new Dictionary<Tuple<string, string>, string>()
{
{ Tuple.Create("A", "First"), "~/ControlOne.ascx" },
{ Tuple.Create("B", "Second"), "~/ControlTwo.ascx" },
{ Tuple.Create("C", "Third"), "~/ControlThree.ascx" },
...
};

var key = Tuple.Create(DR["Name"].ToString(), DR["Description"].ToString());
if (controlsToLoad.ContainsKey(key))
{
Control c = LoadControl(controlsToLoad[key]);
panel1.Controls.Add(c);
}

它比庞大的 if..else 或 switch block 更紧凑,更易于阅读。

关于c# - 替代 if..else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16845562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com