validar solo restringir que punto numeros hacer decimales con como caracteres acepte c# compilation termination

solo - ¿Qué hace un punto y coma después de un bloqueo condicional en C#?



textbox que solo acepte un punto decimal c# (3)

Recientemente encontré este código en un proyecto, que asumí que estaba allí por error:

if(condition) { //Whatever... };

Tenga en cuenta el punto y coma después de la llave de cierre.

¿Alguien sabe cuál es el efecto de esto?

Supongo que no tiene ningún efecto, pero habría pensado que habría causado un error de compilación.


Eso es algo que Visual Studio compilará como una sintaxis válida para una declaración vacía, ya que es solo una terminación de declaración. Tu código se compilará y el extra ; no será un problema

Se puede eliminar para limpiar el código si lo desea, pero dejarlo no causará ningún efecto adverso.

Espero que esto ayude.


Esta es una pregunta simple con una respuesta simple, pero solo quería agregar algo relevante. A menudo, las personas entienden que no hace nada y, en particular, en el caso que usted presentó, el punto y coma es una terminación de línea innecesaria.

Pero ¿cuál es la razón detrás de esto?

En realidad, esas declaraciones vacías son permitidas para declaraciones como estas:

// Use an empty statement as the body of the while-loop. while (Method()) ;

Estoy de acuerdo en que no hace nada. Pero puede ayudar a ciertos bucles a ajustarse a los requisitos sintácticos del lenguaje y creo que esto es lo que la gente debería entender de él. Como han dicho otros, estoy de acuerdo en que puede eliminarlo, solo quería subrayar por qué c # lo permite.

Más aclaraciones

Se usa una declaración vacía cuando no necesita realizar una operación donde se requiere una declaración. Simplemente transfiere el control al punto final de la declaración. No tiene ningún efecto en absoluto, es puro azúcar sintáctico .

Como lo indica @PaulF, en el ejemplo anterior, podría usar un bloque vacío ( {} ) en su lugar. Sería totalmente válido y tendría el mismo efecto.

Una vez más, todo se reduce a estilo. No lo necesita, pero ciertamente puede ayudarlo a ajustarse a las reglas de sus entornos de codificación.

Casos de uso comunes (donde se podrían ver declaraciones vacías)

  • Mientras bucle con cuerpo vacío (mismo caso que subrayé arriba)

    void ProcessMessages() { while (ProcessMessage()) ; // Statement needed here. }

  • goto enunciados (raramente se usa pero sigue siendo válido)

    void F() { //... if (done) goto exit; //... exit: ; // Statement needed here. }

    Desde MSDN

  • Declaración de clase (apoyos a @EricLippert por traer este)

    class SomeClass { ... };

Tenga en cuenta que en este caso, como lo indica @EricLippert en la sección de comentarios, esto es simplemente una cortesía para los programadores de C ++ que están acostumbrados a escribir semis después de las clases; C ++ requiere esto .

A pesar de que el uso general de declaraciones vacías es discutible principalmente debido a la confusión que pueden traer, en mi opinión, sintácticamente hablando, tienen un lugar en C #. No debemos olvidar que C # es un incremento de C ++ (que en su mayoría explica los # aka. Cuatro símbolos "+" en una cuadrícula de dos por dos) y, por razones históricas, permitir declaraciones vacías facilitó la transición.


No parece tener ningún efecto, aunque no recomendaría escribir código de esa manera.

En el caso de que alguna vez desee agregar un else o else if después del ; , no compilará.

Ex:

if(5>1) { //whatever }; else { //whatever }

Esto no compilará (note el ; antes que nada)