C'est une question simple avec une réponse simple, mais je voulais juste ajouter quelque chose de pertinent. Souvent, les gens comprennent qu'il ne fait rien et particulièrement pour le cas que vous avez présenté, le point-virgule est une terminaison de ligne inutile.
Mais quel est le raisonnement qui sous-tend cette décision ?
En fait, ces déclarations vides sont autorisées pour des déclarations comme celles-ci :
// Use an empty statement as the body of the while-loop.
while (Method())
;
Je suis d'accord pour dire que cela ne sert à rien. Mais il peut aider certaines boucles à se conformer aux exigences syntaxiques du langage et je pense que c'est ce que les gens devraient en comprendre. Comme d'autres l'ont dit, je suis d'accord pour dire que vous pouvez le supprimer, je voulais juste souligner pourquoi C# l'autorise.
Précisions supplémentaires
Une instruction vide est utilisée lorsque vous n'avez pas besoin d'effectuer une opération pour laquelle une instruction est nécessaire. Elle transfère simplement le contrôle au point final de l'instruction. Elle n'a aucun effet, c'est du pur sucre syntaxique .
Comme indiqué par @PaulF, dans l'exemple ci-dessus, vous podría utiliser un bloc vide ( {}
) à la place. Cela serait totalement valable et aurait le même effet.
Encore une fois, tout est question de style. Vous n'en avez pas besoin, mais cela peut certainement vous aider à vous conformer aux règles de vos environnements de codage.
Cas d'utilisation courants (où l'on pouvait voir des déclarations vides)
-
Boucle While avec un corps vide (même cas que celui que j'ai souligné ci-dessus)
void ProcessMessages()
{
while (ProcessMessage())
; // Statement needed here.
}
-
goto
déclarations (rarement utilisé mais toujours valable)
void F()
{
//...
if (done) goto exit;
//...
exit:
; // Statement needed here.
}
De MSDN
-
Déclaration de classe (Props à @EricLippert pour avoir apporté celui-ci)
class SomeClass
{
...
};
Notez que dans ce cas, comme l'a déclaré @EricLippert dans la section des commentaires, il s'agit simplement d'une courtoisie envers les programmeurs C++ qui ont l'habitude de taper des semis après les cours ; le C++ exige ceci .
Même si l'utilisation générale des instructions vides est discutable, principalement en raison de la confusion qu'elles peuvent apporter, à mon avis, d'un point de vue syntaxique, elles ont leur place en C#. Il ne faut pas oublier que le C# est un incrémenter de C++ (qui expliquent principalement les #
aka. quatre symboles "+" dans une grille deux par deux) et pour des raisons historiques, autoriser les déclarations vides facilitait la transition.
2 votes
Avez-vous essayé de le compiler ? Quel a été le résultat ?
31 votes
C'est juste une terminaison de ligne inutile -
if(true) {};;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
compilera1 votes
C'est juste une déclaration vide.
4 votes
C'est une déclaration vide. Elle ne sert à rien.
0 votes
Je me demande pourquoi les questions simples sont toujours rejetées au départ... Au lieu du cliché Il n'y a pas de mauvaises questions disons simplement que simple ne veut pas dire mauvais .
3 votes
Notez que si vous aviez écrit
if(condition);
alors vous serait ont reçu un avertissement du compilateur indiquant que l'instruction vide était probablement une erreur, carif(condition); DoIt();
semble, pour le programmeur novice, fonctionnerDoIt()
sous condition, mais l'exécute en fait sans condition. Les auteurs du compilateur auraient pu faire la même chose pourif(condition){};
mais cette erreur a beaucoup plus de chances d'être inoffensive car elle ne modifie pas le sens du programme.3 votes
Notez également que C# autorise un semi de fin après une déclaration de classe, et l'ignore. Dans ce cas, il s'agit simplement d'une courtoisie envers les programmeurs C++ qui ont l'habitude de taper des semi après les classes ; le C++ l'exige.
0 votes
À un moment donné, une entreprise technologique assez importante a essayé d'augmenter la productivité de ses développeurs en comptant leurs lignes de code et en l'utilisant comme un moyen d'évaluer le développeur. Les développeurs ont fini par se rendre compte qu'il existait un programme qui ne faisait que compter leurs points-virgules. Les développeurs ont alors commencé à ajouter des points-virgules supplémentaires à leur code afin d'augmenter leurs évaluations. Peut-être que le point-virgule dans cet extrait ne fait pas rien après tout, peut-être qu'il est là pour aider le développeur à obtenir une meilleure évaluation. payé .