tag resueltos propiedad espacios ejercicios conjuntos conexos arquitectura c# c programming-languages superset

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 ...



Digámoslo así:

C y C# son similares a rm -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.