用于基本存储具有多个 fallthrough 情况的 switch 语句的内容的好的集合/容器是什么?我想,更准确的方法是,什么是“多键一值”查找的良好 C# 解决方案?我检查了 System.Collections 命名空间及其关联的命名空间,但没有发现任何特别适合多键一值的内容。
最近,我为自己编写了一个小型控制台程序来构建和验证我的 Web 应用程序所需的 XML 文件,以避免手动编写时出现的错误。但是对于初始版本,我硬编码了许多稍微可变的元素——特别是一些用于验证的字典和一个具有大量 fallthrough 选项的大型 switch 语句。虽然这将在未来几个月内有效,但最终可能有必要更新这些硬编码元素,目前这需要编辑源文件。为了避免这种情况,我决定将字典和开关语句信息存储在一个 XML 文件中(最终以一种可怕的递归趋势演变为编写一个程序来构建和验证那些 XML 文件)。现在,在将其存储在文件中时,当我检索数据时,我不能像重建字典那样简单地重建 switch 语句。所以我只需要模拟 switch 语句的效果,这基本上意味着我需要几个“键”来引用相同的“值”。
来自 switch 语句的示例片段。此方法会将特殊值输入转换为相应的 ID,主要是为了节省试图记住这些值的人类内存空间。基本上如图所示,我想要一个容器来存储所有输出单个值的几个键。
private static string DiscernRegistrationId(string str)
{
string retVal = str;
switch (str.ToLowerKey()) //shortcut extension for str.Replace(" ","").Replace(".","").ToLowerInvariant()
{
case "computerpackage":
case "comppackage":
case "cpackage":
case "computerpkg":
case "comppkg":
case "cpkg":
retVal = "0x0100C73692D109C741A1B8846141B47519C8";
break;
case "mobilepackage":
case "mobpackage":
case "mpackage":
case "mobilepkg":
case "mobpkg":
case "mpkg":
retVal = "0x010081F753F0A4A5412CB6A8E9F8CD193F58";
break;
//More cases follow
}
return retVal;
}
最佳答案
我会用普通的Dictionary<string, string>
并将所有失败案例指向相同的 string
目的。
关于c# - 将硬编码的 switch 语句转换为动态加载的多键一值查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2921158/