.NET反编译程序集有'&'在类型生成构建错误

时间:2017-01-05 22:28:47

标签: c# .net vb.net dotpeek

我继承了一些程序集,据我所知,这些程序集是使用Visual Studio 2005,.NET Framework 1.1(?)和VB.NET生成的。不幸的是,源代码不再适用于我。因此,我使用dotPeek反编译程序集(作为C#)并尝试对项目进行逆向工程。生成的源代码有几行看起来类似于:

// ISSUE: explicit reference operation
// ISSUE: variable of a reference type
string& szDataDescr = @str;

'string&'对我来说是陌生的(显然也是Visual Studio)。 Visual Studio 2015不认为这是有效的,我收到编译错误。是'&' dotPeek添加的东西,还是一些当时有效的遗留.NET构造?类似评论出现在'type&'的所有地方使用了模式,所以我认为它是相关联的。

1 个答案:

答案 0 :(得分:2)

&类型名称后面的符号表示它是引用类型,变量名称前面的@生成对该变量的引用。

如果您尝试编译代码,则会出现错误,因为编译器会处理&作为按位和,并且会抱怨你使用了一个类型,好像它是一个变量。但这没关系,因为你没有从C#源文件中获取它。

最佳解决方案是使用不同的反编译器。

点击此处查看有关what the & does in IL的更多信息。