Man*_*l23 5 c# decompiling reverse-engineering
我正在重建使用C#编程的库,并且需要有关Switch语句的帮助,我使用<PrivateImplementationDetails> .ComputeStringHash ()编译期间生成的函数编写以下代码段。我的问题是,我应该使用什么功能?使用会得到相同的结果sss.GetHashCode()吗?
当前向我显示的错误是Can not resolve symbol 'PrivateImplementationDetails'。
switch (<PrivateImplementationDetails>.ComputeStringHash(sss)) {
case 0x1315fc:
if (sss == "ASD") {
break;
}
goto Label_0105;
case 0x15c3dc:
if (sss == "JKL") {
break;
}
goto Label_0105;
}
Run Code Online (Sandbox Code Playgroud)
在提出问题时,生成的 IL 相对较新,因此反编译器尚未更新以支持它。本质上,反编译器揭示了一些底层 .NET 框架代码和用于支持字符串 switch 语句的哈希函数。
现在,大约一年后,反编译器已经更新,因此它们应该只显示switch如下声明:
switch (sss)
{
case "ASD":
// do something
break;
case "JKL":
// do something
break
}
Run Code Online (Sandbox Code Playgroud)
我已经用DotPeek对此进行了测试,并且可以确认它正确地显示了这一点。