¿Cuál es la diferencia entre C# y .NET?
¿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?
C# es un lenguaje de programación, .NET es un término general que tiende a cubrir tanto .NET Framework (una biblioteca de marco 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 C# por parte de Microsoft está fuertemente 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#:
class Example { }
Aquí hay una clase escrita en C# que utiliza explícitamente un ensamblado, tipo y método de .NET Framework:
class Example
{
static void Main()
{
// Here we call into the .NET framework to
// write to the output console
System.Console.Write("hello, world");
}
}
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) porque Example
hereda de System.Object
.
Además, la razón por la que uso la frase implementación de C# de Microsoft es porque hay otras implementaciones de C# disponibles .
Además de la respuesta de Andrew , vale la pena señalar que:
- .NET no es sólo una biblioteca , sino también un tiempo de ejecución para ejecutar aplicaciones.
- El conocimiento de C# implica algún conocimiento de .NET (porque el modelo de objetos de C# corresponde al modelo de objetos de .NET y puedes hacer algo interesante en C# simplemente usando bibliotecas .NET). Lo contrario no es necesariamente cierto, ya que se pueden utilizar otros lenguajes para escribir aplicaciones .NET.
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 sólo muy poco sobre el entorno (básicamente, que debería contener algunos tipos como int
, pero eso es más o menos todo).