【发布时间】:2017-11-04 10:40:38
【问题描述】:
我正在重建一个用 C# 编程的库,需要 Switch 语句的帮助,我有以下代码 sn-p 使用编译期间生成的 <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;
}
【问题讨论】:
-
你的反编译器不够聪明,无法识别这个结构,这有点可以理解,因为这个代码生成是最近才添加的。原始代码只有
switch (sss) { case "ASD": etc }。生成哈希会加快速度。 -
@HansPassant 那么,如果我使用
sss.GetHashCode()而不是重新编码开关(开关很长),这会起作用吗?谢谢 -
没有。您根本不应该使用任何哈希码。当您为字符串编写普通的 switch 语句时,C# 编译器会自动生成它。试试看。
标签: c# reverse-engineering decompiling