我发现下面的代码:
public static class MimeHelper
{
public static string GetMimeType(string strFileName)
{
string retval;
switch (System.IO.Path.GetExtension(strFileName).ToLower())
{
case ".3dm": retval = "x-world/x-3dmf"; break;
case ".3dmf": retval = "x-world/x-3dmf"; break;
case ".a": retval = "application/octet-stream"; break;
// etc...
default: retval = "application/octet-stream"; break;
}
return retval;
}
}
导致编译器创建这个无名称空间的内部类(从 Reflector 复制):
<PrivateImplementationDetails>{621DEE27-4B15-4773-9203-D6658527CF2B}
- $$method0x60000b0-1 : Dictionary<String, Int32>
- Used By: MimeHelper.GetMimeType(String) : String
这是为什么?
我如何更改上面的代码,这样它就不会发生(只是出于兴趣)
Thanks
Andrew
它创建字典来处理 switch 语句中各种情况的查找,而不是从中创建多个分支 if 来设置返回值。相信我——你不想改变它的运作方式——除非你想让地图变得明确。
ASIDE:我最初假设字典存储了从每个案例到另一个映射的索引的映射以获取返回值。根据@Scott(参见评论),它实际上存储了应该针对该情况执行的代码的标签索引。当您考虑到为每种情况执行的代码可能不同并且可能比给定示例长得多时,这绝对有意义。
EDIT:根据您的评论,我想我可能会想将映射存储在外部配置文件中,在启动期间读取它们,并构建实际的映射 - 从键到值的单级映射或类似的多级映射从键到索引以及索引到值。我认为在配置文件中维护这些映射比每次需要添加或删除特定情况时更新代码更容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)