resueltos - propiedad tag c#
Es C#un superconjunto de C? (8)
C # es muy diferente de C (y también C ++ es muy diferente de C). Esto no se debe a la semántica, que al final no es demasiado diferente, sino a causa de los conceptos, las ideas que están detrás de C #.
Cuando programa en C # tiene que pensar de una manera diferente a la que solía hacer si usa C: esta es la diferencia principal.
¿C es un superconjunto de C de todos modos, como Objective-C o C ++? ¿Hay alguna manera de compilar C en línea con construcciones tales como indicadores de compilación?
C # proviene de la familia "c-like" en lo que respecta a la sintaxis , pero en cuanto a la arquitectura, se parece más a Java (sin punteros [OK, como se señala a continuación, puede usarlos, pero la mayoría de la gente no sabe) o se preocupan por eso], las matrices están marcadas, la memoria recolectada, etc.).
Puedes obtener mucho de eso en C ++, pero no en el núcleo.
C # y C no están realmente relacionados (aparte de la sintaxis similar). C # se ajusta al código máquina de IL cuando se inicia el programa. C # no tiene punteros a excepción de los tipos de valores en esa pila. C # es totalmente seguro, C no. C requiere administración de memoria explícita donde C # es basura recolectada. La lista de diferencias sigue y sigue ...
C ++ tampoco es un superconjunto real de C (ver el texto del enlace )
Digámoslo así:
C
yC#
son similares arm -rf . /
rm -rf . /
y# rm -rf . /
# rm -rf . /
son similares
En resumen, no C no es un subconjunto de C #. El aspecto de muchas estructuras de control se basa en C. Me gusta, bucles forzados, interruptores, mientras y así sucesivamente. Al mismo tiempo, C # prohíbe construcciones potencialmente peligrosas, como caerse de un caso en un interruptor al olvidar un salto, o poner un entero como una condición if donde se espera un valor booleano. La cita anterior significa que C # y C pueden parecer muy similares, pero se traducen en resultados muy diferentes. Donde C no le impedirá eliminar todo de su partición, C # lo protegerá por error, figurativamente hablado.
En otro nivel, C le permite teclear punteros a números enteros, empujarlos, devolverlos y luego acceder a las ubicaciones de memoria que se almacenan en ese puntero. C no lo protegerá de tener acceso a la memoria que usted no asignó. Tendrá un accidente, en el mejor de los casos. C # - en el otro lado - tendrá excepciones que lo notarán cuando haga cosas como acceder al objeto a través de una referencia nula.
En una palabra, no.
No de ninguna manera significativa. Está inspirado en C (entre otros), pero son idiomas fundamentalmente diferentes.
C es imperativo. C # está orientado a objetos.