我继承了一些程序集,据我所知,这些程序集是使用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&'的所有地方使用了模式,所以我认为它是相关联的。
答案 0 :(得分:2)
&类型名称后面的符号表示它是引用类型,变量名称前面的@生成对该变量的引用。
如果您尝试编译代码,则会出现错误,因为编译器会处理&作为按位和,并且会抱怨你使用了一个类型,好像它是一个变量。但这没关系,因为你没有从C#源文件中获取它。
最佳解决方案是使用不同的反编译器。
点击此处查看有关what the & does in IL的更多信息。