31 votes

Que signifie / *! * / En C #?

Je suis nouveau en C # et je lis du code avec /*!*/ dans ce qui semble être des endroits étranges. Par exemple, les méthodes de classe définies comme suit:

 protected override OptionsParser/*!*/ CreateOptionsParser()
protected override void ParseHostOptions(string/*!*/[]/*!*/ args)
 

Malheureusement, /*!*/ n'est pas acceptable. Qu'est-ce que ça veut dire?

47voto

JaredPar Points 333733

C'est probablement une tentative pour obtenir Spec# style annotations dans un non-Spec# construire. L' ! annotation en Spec# signifie que la valeur n'est pas null. L'auteur est probablement en essayant d'indiquer que les deux valeurs de retour, tableau args et de tous les éléments dans les arguments sont toujours les valeurs non null.

Spec# Lien:

Rapide Spec# Vue D'Ensemble:

Spec# est un .Net langage créé par Microsoft Projet de Recherche. C'est une extension du langage C# qui tente d'intégrer les contrats de code dans le système de type. Les plus importants sont non-types nullables (indiqués avec ! après le nom du type), vérifié les exceptions et les pré/post-conditions.

19voto

Jay Riggs Points 30783

C'est un commentaire qui contient un '!'

Tout ce qui est contenu dans / / * * / est un commentaire qui sera ignoré lors de la compilation du code.

6voto

nicerobot Points 4811

Je ne sais pas à propos de C# spécifiquement, il pourrait être une notation spéciale pour quelque chose, mais j'utilise une technique similaire dans n'importe quelle langue qui prend en charge ouvrir/fermer, multi-ligne jetons des commentaires pour me permettre de rapidement et supprimez les marques de commentaire de plusieurs lignes avec un seul caractère à modifier, comme suit:

/*!*/
this is live code (and will probably cause a compilation error)
/*!*/

/*!* /
this is commented code (and should never cause a compilation error)
/*!*/

La raison de l' ! est parce que des constructions comme /** sont communs jetons utilisés par les outils de documentation.

Il existe d'autres techniques que le langage prend en charge commentaire sur une seule ligne jetons, // (et les met en œuvre, comme C++ et Java):

///* - opening comments can be commented-out so what follows isn't a comment.
this is live code
//*/ - closing comment are not commented-out by single-line comments.

De sorte que vous pouvez ensuite supprimer le premier commentaire sur une seule ligne jeton, //, pour produire une sorte de "bascule":

/* this is now commented.
this is also commented.
//*/ this line is live code.

1voto

Samuel Carrijo Points 9056

C'est un commentaire avec '!'. Le programmeur voulait probablement s'assurer que vous aviez remarqué que la première méthode renvoyait un OptionsParser et que la seconde recevait un tableau de chaînes, et pas seulement une chaîne.

Vous pouvez les supprimer et ils continueront à fonctionner correctement =)

1voto

Rubens Farias Points 33357

C'est juste un commentaire délimité ; probablement votre programmeur vient de marquer ces points à discuter plus tard.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X