0

我继承了一些据我所知是使用 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&' 模式的任何地方都会出现类似的注释,所以我认为它是关联的。

4

1 回答 1

2

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

如果你试图编译代码,你会得到一个错误,因为编译器将 & 视为按位与,并且会抱怨你使用了一个类型,就好像它是一个变量一样。但这没关系,因为您不是从 C# 源文件中获取它的。

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

在此处查看有关& 在 IL 中的作用的更多信息。

于 2017-01-06T12:44:14.930 回答