C#-基于字典键动态更新标签

C#-基于字典键动态更新标签,c#,dictionary,label,C#,Dictionary,Label,我有几个标签需要在C#表单上更新,我希望以更高效的方式更新。当前,如果用户单击复选框,复选框ID将添加到字典中,并且标签将根据复选框ID的值进行更新 foreach (KeyValuePair<int, string> checkbox in CheckedDict) { switch (checkbox.Key) { case 0: SomeLabel.Text = checkbox.Value; break; case 1:

我有几个标签需要在C#表单上更新,我希望以更高效的方式更新。当前,如果用户单击复选框,复选框ID将添加到字典中,并且标签将根据复选框ID的值进行更新

foreach (KeyValuePair<int, string> checkbox in CheckedDict)
{
  switch (checkbox.Key)
  {
    case 0:
      SomeLabel.Text = checkbox.Value;
      break;
    case 1:
      SomeOtherLabel.Text = checkbox.Value;
      break;
    ...
}
foreach(CheckedDict中的KeyValuePair复选框)
{
开关(checkbox.Key)
{
案例0:
SomeLabel.Text=checkbox.Value;
打破
案例1:
SomeOtherLabel.Text=checkbox.Value;
打破
...
}
关于如何使它更好、更快、更干净等,有什么建议吗?

“更快”与此无关,因为如果有6到7个不同的标签,C#编译器会将其转换为字典查找。即使没有,与实际更新所需的时间相比,确定要更新哪个标签所需的时间将很小

不过,您可以通过创建包含键和标签的并行字典使其更干净。例如:

Dictionary<int, Label> labelDictionary = new Dictionary<int, Label>
{
    {0, SomeLabel},
    {1, SomeOtherLabel},
    ...
};
Dictionary labelDictionary=新字典
{
{0,SomeLabel},
{1,SomeOtherLabel},
...
};
然后在代码中:

foreach (KeyValuePair<int, string> checkbox in CheckedDict)
{
    labelDictionary[checkbox.Key].Text = checkbox.Value;
}
foreach(CheckedDict中的KeyValuePair复选框)
{
labelDictionary[checkbox.Key].Text=checkbox.Value;
}

Perfect!虽然我知道编译器会将开关大小写转换为查找,但我不想要一个巨大的大小写语句。这使代码更加清晰。