C# Clase 1
C# Clase 1
El núcleo del framework .NET es su entorno de ejecución llamado, en inglés, Common Language
Runtime (CLR).
No obstante antes de ser ejecutado, todo código fuente debe ser compilado, (en C# o en cualquier
otro lenguaje). La compilación de un programa .NET ocurre en dos instancias.
Justamente tener un programa en código intermedio, (JAVA también produce código intermedio
con Bytes Codes), permite que el mismo sea multiplataforma.
El código MSIL es compilado a código nativo de una forma particular. En lugar de compilar toda la
aplicación de una, el compilador simplemente compila cada porción de código a medida que es
invocado, de ahí que se conoce a estos compiladores como JITTERS o JIT, (“Just in Time”). El
código nativo resultante es guardado hasta que la aplicación termine, así no necesita ser
recompilado cada vez que es llamado.
Además de C# existen.
1
Tecnicas Avanzadas de Programacion
Por otro lado otras empresas también han adaptado sus lenguajes para poder generar código
MSIL, como es el caso de Borland con Delphi y C++. Incluso existe una versión de Cobol .NET.
Teniendo presente la cualidad de interoperatibilidad entre lenguajes .NET suponga que un método
de una clase escrita en Visual Basic.NET retorna un valor integer, el cual es uno de los tipos de
datos estándares en dicho lenguaje. C# no tiene un tipo de datos con ese nombre, obviamente uno
podría derivar una nueva clase de ésta si el compilador de C# conociera como “mapear” el tipo de
datos integer de Visual Basic.NET a alguno de los usados en C#.
Este problema es solucionado en .NET a través del uso del Common Type System (CTS). El CTS
define los datos predefinidos que están disponibles en MSIL, o sea, todos los lenguajes que usen
el framework .NET producirán código MSIL que estarán basados en esos tipos. No importa que en
Visual Basic se llame integer y en C# int, siempre producirán el mismo tipo de datos en MSIL.
De la misma forma una declaración en diferentes lenguajes .NET es sólo cuestión de formalidad:
2
Tecnicas Avanzadas de Programacion
System.Int32 j = 0;
El CLS trabaja de dos maneras. Primero, aceptando que se puede escribir un compilador .NET sin
necesidad de tener presente todas las características de .NET, y segundo, garantizando que si ese
compilador restringe sus clases solamente a exponer la funcionalidad expuesta por el CLS, el
código escrito en otro lenguaje .NET también podrá usar su clase.
Lo particular de esto es que las restricciones a usar sólo características aceptadas por el CLS, se
aplica a miembros públicos y protegidos de las clases. En lo que respecta a la implementación
privada de sus clases, se puede escribir código fuera del CLS porque de todas maneras nadie
podrá acceder a ese código.
En resumen: el CLS son un conjunto de reglas que describen en detalle un mínimo y completo
conjunto de características de un compilador .NET de manera tal que pueda producir código
compilado (MSIL) entendible para el CLR y a la vez accesible de la misma forma para múltiples
lenguajes de programación.
El recolector de basura sería algo así como el paraíso de un programador de C/C++, ya que se
encarga de administrar la memoria usada en tiempo de ejecución
Es un programa cuyo único propósito es limpiar la memoria. La idea es que toda memoria pedida
dinámicamente es ubicada en el montón (heap), lo cual también se aplica a todos los lenguajes
aunque no sean .NET, pero en .NET el CLR mantiene su propio heap a el cual le aplica el
recolector de basura cada vez que un objeto sale de ámbito.
Actividades:
https://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx
Si ya tiene instalada una versión de Visual Studio que incluye C#, no necesita bajar esta versión,
puede usar la que ya tiene.
3
Tecnicas Avanzadas de Programacion