en C++, se requiere un punto y coma para finalizar la definición de la clase. Me pregunto por qué C# no lo requiere.¿Por qué C# no requiere un punto y coma después de una definición de clase?
Respuesta
El lenguaje C++ permite declarar una variable en la declaración de clase. Similar a:
class Mumble {
// etc...
} globalMumble;
se requiere que el punto y coma sintaxis para permitir que el compilador sabe si es o no una variable se declara así. Esta sintaxis es una fuente crónica de muy difícil de interpretar los mensajes de error de compilación. La peor es la siguiente:
mumble.h:
class Mumble {
// etc...
} // <== note: semi-colon forgotten
mumble.cpp:
#include "stdafx.h"
#include "mumble.h"
int main() {
Mumble* obj = new Mumble;
}
Esto produce estos mensaje de error maravillosa:
main.cpp(8): error C2628: 'Mumble' followed by 'int' is illegal (did you forget a ';'?)
main.cpp(9): error C3874: return type of 'wmain' should be 'int' instead of 'Mumble'
main.cpp(10): error C2440: 'return' : cannot convert from 'int' to 'Mumble'
cuenta que todas las los mensajes de error se refieren al archivo .cpp, no al archivo .h que contiene el error. Los programadores desesperados han perdido horas en esto, junto con grandes grupos de cabello en la cabeza.
El lenguaje C# fue diseñado por programadores C++ altamente calificados. Quien se propuso diseñar un lenguaje que evitara este tipo de problemas de sintaxis de la vida real. Esto es evidente en muchos lugares en la sintaxis de C#. Resumen largo: C# no permite este tipo de sintaxis de C++, no se requiere punto y coma para ayudar al compilador.
Semicolons declaraciones de delimitación en C#.
Dado que las clases no son enunciados (y un paréntesis ya finaliza la definición de clase), un punto y coma sería redundante.
Ciérrelo o respóndalo, no haga ambas cosas. –
@Hans: En el momento en que lo respondí, ya se había identificado como un duplicado, y obtuve tres votos cercanos. Así es la vida. Verifique las marcas de tiempo en mi respuesta y el cierre. –
- 1. ¿Por qué #define no requiere un punto y coma?
- 2. ¿Por qué Objective-C permite un punto y coma al final de una definición de método?
- 3. Punto y coma después de la función
- 4. punto y coma después de las llaves en C++
- 5. Efecto de usar una coma en lugar de un punto y coma en C y C++
- 6. ¿Por qué debería usar un punto y coma después de cada función en javascript?
- 7. punto y coma en la definición de la regla Makefile
- 8. ¿Por qué necesito un punto y coma aquí?
- 9. Punto y coma opcional en C++
- 10. ¿Qué sucede cuando uno coloca un punto y coma después de una condición de ciclo while?
- 11. Excepción de punto flotante C++ ¿Por qué y qué es?
- 12. Punto y coma después de cerrar la llave en PHP
- 13. ¿por qué la directiva #include no tiene un punto y coma al final de la instrucción?
- 14. Expresión de tabla común, ¿por qué punto y coma?
- 15. ¿Cuándo se ordena un punto y coma} en c/C++?
- 16. Confusión de declaración de clase: nombre entre el corchete de cierre y el punto y coma
- 17. ¿Por qué csvwriter.writerow() pone una coma después de cada carácter?
- 18. ¿Qué significa 'punto y coma' como una unidad de tamaño
- 19. Punto y coma en jQuery
- 20. ¿por qué incluir líneas que no terminan con un punto y coma?
- 21. ¿Por qué poner una declaración y definición de clase en dos archivos separados en C++?
- 22. Dígitos de concordancia regex, coma y punto y coma?
- 23. Uso de punto y coma dentro timeit
- 24. Apertura de archivo CSV delimitado por punto y coma
- 25. ¿Cuándo colocaría un punto y coma después de un método de cierre de llave?
- 26. ¿Por qué Java no muestra un error para punto y coma doble al final de una instrucción?
- 27. ¿Por qué es malo poner un espacio antes de un punto y coma?
- 28. ¿Debería poner un punto y coma después de una sola declaración de PHP?
- 29. ¿Qué hace si(); hacer, donde el punto y coma es justo después de los paréntesis?
- 30. ¿Por qué este código necesita una línea vacía o un punto y coma?
... aunque el punto y coma * está permitido, * según la especificación C# (es opcional). –