Я обнаружил, что следующий код:Почему компилятор C# создает PrivateImplementationDetails из этого кода?
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;
}
}
заставляет компилятор создать этот namespaceless, внутренний класс (скопированный с рефлектором):
<PrivateImplementationDetails>{621DEE27-4B15-4773-9203-D6658527CF2B}
- $$method0x60000b0-1 : Dictionary<String, Int32>
- Used By: MimeHelper.GetMimeType(String) : String
Почему это? Как бы я изменил код выше, так что не происходит (просто из интереса)
Благодарности
Эндрю
как не по теме, почему вы используете дополнительную переменную строки retval, если вы можете сразу вернуться из коммутатора? – abatishchev
, потому что это было копирование и вставка задания откуда-то, да я мог (и будет) изменить его, чтобы сделать это –