减小函数大小
本文关键字:函数 | 更新日期: 2023-09-27 18:01:48
也许这是一个愚蠢的问题,但由于我不是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;
}
}
}
编辑:感谢大家,我的支持。我找到我想要的了。
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;
}
}
编辑:固定
我认为该方法的意图是明确的,并且实现是干净的。它可能比您想要的长几行,但是在我的书中,为了几行代码而混淆是一种净损失。
这可能行得通:
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");
}
对于有限的范围,这工作得很好,但假设它是10倍大,并且有更多的输入。
你想要的是一个"真值表"的设置。
你有一个字典,它接受一个与参数相对应的键。
给定参数'isBlue'和'isBig',你的字典键将是
'ff'//不是蓝色或大
'tf'//蓝色但不大
等。
字典键指向一个值,该值是对象、属性名及其值的映射。
所以你的映射可以是一个tuple列表。其中Tuple<object、string、object>或仅仅是相同的结构体
然后你的代码会做一些if来组合键,从字典中获取元组或结构体的列表,运行列表来做适合每个对象的操作。