2017-01-05 2 views
0

J'ai hérité de quelques assemblages qui, autant que je sache, ont été produits en utilisant Visual Studio 2005, .NET Framework 1.1 (?) Et VB.NET. Malheureusement, le code source n'est plus disponible pour moi. Par conséquent, j'ai utilisé dotPeek pour décompiler les assemblages (en C#) et essayer de désosser les projets. Le code source résultant a quelques lignes qui ressemblent à:L'assembly décompilé .NET a un '&' après le type produisant l'erreur de construction

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

La « chaîne & » est étranger à moi (et Visual Studio trop apparemment). Visual Studio 2015 ne reconnaît pas cela comme valide et j'obtiens des erreurs de compilation. Le '&' est-il quelque chose que dotPeek a ajouté, ou est-ce une construction .NET ancienne qui était valide à l'époque? Un commentaire similaire apparaît partout où le modèle 'type &' est utilisé, donc je suppose qu'il est associé.

+0

Avez-vous essayé d'autres décompilateurs? –

+1

Que produit http://ilspy.net/? –

+1

Vérifiez http://stackoverflow.com/questions/11067395/what-is-the-ampersand-character-at-the-end-of-an-object-type en savoir plus sur le & –

Répondre

2

Le signe & après un nom de type indique qu'il s'agit d'un type de référence et le @ devant un nom de variable génère une référence à cette variable.

Si vous avez essayé de compiler le code, vous obtiendrez une erreur car le compilateur traite & comme bit et, et se plaindra que vous avez utilisé un type comme s'il s'agissait d'une variable. Mais c'est ok parce que vous ne l'avez pas obtenu à partir d'un fichier source C#.

La meilleure solution consiste à utiliser un décompilateur différent.

Cochez cette case pour plus d'informations sur what the & does in IL.