¿Puedo saber cuál es la diferencia entre C # y .NET? Cuando pienso en C #, inmediatamente diría que es un lenguaje .NET, pero cuando busco puestos de trabajo, requieren que los candidatos tengan experiencia en C # y .NET. ¿Alguien puede darme una explicación?
204
Respuestas:
Además de lo que dijo Andrew, vale la pena señalar que:
La distinción entre un lenguaje , un tiempo de ejecución y una biblioteca es más estricta en .NET / C # que, por ejemplo, en C ++, donde la especificación del lenguaje también incluye algunas funciones básicas de la biblioteca. La especificación de C # dice muy poco sobre el entorno (básicamente, que debería contener algunos tipos como
int
, pero eso es más o menos todo).fuente
C # es un lenguaje de programación, .NET es un término general que tiende a cubrir tanto .NET Framework (una biblioteca de framework de aplicaciones) como Common Language Runtime, que es el tiempo de ejecución en el que se ejecutan los ensamblados .NET.
La implementación de Microsoft de C # está muy integrada con .NET Framework, por lo que es comprensible que los dos conceptos se confundan. Sin embargo, es importante entender que son dos cosas muy diferentes.
Aquí hay una clase escrita en C #:
Aquí hay una clase escrita en C # que usa explícitamente un ensamblado, tipo y método de marco .NET:
Como mencioné antes, es muy difícil usar la implementación de C # de Microsoft sin usar también el marco .NET. Mi primera
Example
implementación anterior incluso usa el marco .NET (implícitamente, sí, pero de todos modos lo usa) porqueExample
hereda deSystem.Object
.Además, la razón por la que uso la frase La implementación de C # de Microsoft es porque hay otras implementaciones de C # disponibles .
fuente
C # es un lenguaje de programación, .NET es el marco en el que se basa el lenguaje.
fuente
C # es un fuerte lenguaje de programación orientado a objetos que se basa principalmente en el marco .NET.
C # es el avión y .NET es la pista;)
fuente
C # es un lenguaje, .NET es un marco de aplicación. Las bibliotecas .NET pueden ejecutarse en el CLR y, por lo tanto, cualquier lenguaje que pueda ejecutarse en el CLR también puede usar las bibliotecas .NET.
Si está familiarizado con Java, esto es similar ... Java es un lenguaje construido sobre la JVM ... aunque cualquiera de las bibliotecas preensambladas de Java puede ser utilizada por otro lenguaje construido sobre la JVM.
fuente
CLR
?Cuando las personas hablan sobre el "marco .net", tienden a combinar dos áreas principales: la biblioteca de tiempo de ejecución y la máquina virtual que realmente ejecuta el código .net.
Cuando crea una biblioteca de clases en Visual Studio en C #, la DLL sigue un formato prescrito, más o menos, hay una sección que contiene metadatos que describen qué clases se incluyen y qué funciones tienen, etc. y que describe dónde en el binario existen esos objetos. Este formato .net común es lo que permite compartir bibliotecas entre los idiomas .net (C #, VB.Net, F # y otros) fácilmente. Aunque gran parte de la "biblioteca de tiempo de ejecución" .net está escrita en C # ahora (creo), se puede imaginar cuántos de ellos podrían haberse escrito en idiomas no administrados pero dispuestos en este formato prescrito para que puedan ser consumidos por los idiomas .net .
La verdadera "carne" de la biblioteca que crea consiste en CIL ("Common Intermediate Language"), que es un poco como el lenguaje ensamblador de .net. De nuevo, este lenguaje es la salida común de todos los lenguajes .net, que es lo que hace que las bibliotecas .net sean consumibles por cualquier lenguaje .net.
Con la herramienta "ildasm.exe", que está disponible gratuitamente en los SDK de Microsoft (y puede que ya esté en su computadora), puede ver cómo el código C # se convierte en metadatos e IL. Incluí una muestra al final de esta respuesta como ejemplo.
Cuando ejecuta ejecutar el código .net, lo que sucede comúnmente es que la máquina virtual .net está leyendo esa IL y la está procesando. Este es el otro lado de .net y, nuevamente, es probable que pueda imaginar que esto podría escribirse fácilmente en un lenguaje no administrado: "solo" necesita leer las instrucciones de VM y ejecutarlas (e integrarse con el recolector de basura, que también necesita no ser código .net).
Lo que he descrito es (de nuevo, más o menos) lo que sucede cuando compila un ejecutable en Visual Studio (para obtener más información, recomiendo encarecidamente el libro "CLR a través de C # de Jeffrey Richter", es muy detallado y está excelentemente escrito).
Sin embargo, hay veces que puede escribir C # que no se ejecutará dentro de un entorno .net, por ejemplo, Bridge.NET "compila" el código C # en JavaScript, que luego se ejecuta en el navegador (el equipo que lo produce ha ido a el esfuerzo de escribir versiones de la biblioteca de tiempo de ejecución .net que están escritas en JavaScript y, por lo tanto, el poder y la flexibilidad de la biblioteca .net está disponible para el JavaScript generado). Este es un ejemplo perfecto de la separación entre C # y .net: es posible escribir C # para diferentes "objetivos"; puede orientar el entorno de tiempo de ejecución .net (cuando crea un ejecutable) o puede orientar el entorno del navegador (cuando usa Bridge.NET).
Una clase de ejemplo (muy) simple:
Los metadatos e IL resultantes (recuperados a través de ildasm.exe):
fuente
En .NET no encuentras solo C #. Puede encontrar Visual Basic por ejemplo. Si un trabajo requiere conocimiento de .NET, probablemente necesite un programador que conozca todo el conjunto de lenguajes provistos por el marco .NET.
fuente
C # es un lenguaje de programación.
.Net es un marco utilizado para crear aplicaciones en Windows.
.Net framework no está limitado a C #. Diferentes lenguajes pueden apuntar a .Net framework y construir aplicaciones usando ese framework. Los ejemplos son F # o VB.Net
fuente
C#
no tiene una biblioteca de tiempo de ejecución separada. Se utiliza.NET
como biblioteca de tiempo de ejecución.fuente
Aquí le proporcioné un enlace donde explica qué es el lenguaje C # y la arquitectura de la plataforma .NET Framework . Recuerde que C # es un lenguaje de programación orientado a objetos de uso general y se ejecuta en .NET Framework.
.NET Framework incluye una biblioteca de clase grande llamada Framework Class Library (FCL) y proporciona interfaz de usuario, acceso a datos, conectividad de base de datos, criptografía, desarrollo de aplicaciones web, algoritmos numéricos y comunicaciones de red.
.NET Framework fue desarrollado por Microsoft que se ejecuta principalmente en Microsoft Windows.
Introducción al lenguaje C # y .NET Framework de Microsoft Docs
fuente