![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPp3kWTzkLg9SjJxdIgrlWz30gflYiJKKHFTvPERSAVwBMimur_wXgc1qV3RNyO-8XW6vkWkfY72DGeOTkXMNHpwKRmQ76ChEpTgpAN5eW4K5-ixnKguSPDZi9ZCap6rHGZ4_ZfDrHCj8/s400/descarga.png)
C# es un lenguaje de programación simple pero eficaz, diseñado para escribir aplicaciones empresariales.
El lenguaje C# es una evolución de los lenguajes C y C++. Utiliza muchas
de las características de C++ en las áreas de instrucciones, expresiones y
operadores.
C# presenta considerables mejoras e innovaciones en áreas como seguridad
de tipos, control de versiones, eventos y recolección de elementos no
utilizados (liberación de memoria).
C# proporciona acceso a los tipos de API más comunes: .NET Framework,
COM, Automatización y estilo C. Asimismo, admite el modo unsafe,
en el que se pueden utilizar punteros para manipular memoria que no se
encuentra bajo el control del recolector de elementos no utilizados.
Características:
A
continuación enumeramos las principales características que definen al lenguaje
de programación C#. Algunas de estas características no son propias del
lenguaje, sino de la plataforma .NET, aunque se listan aquí ya
que tienen una implicación directa en el lenguaje.
•Sencillez de uso
C#
elimina muchos elementos añadidos por otros lenguajes y que facilitan su
uso y compresión, como por ejemplo ficheros de cabecera, o ficheros fuentes IDL 1.12, por ello que se dice
que C# es auto contenido. Además, no se incorporan al lenguaje elementos
poco útiles, como por ejemplo macros,
herencia múltiple u operadores diferentes al operador de acceso a métodos
(operador punto) para acceder a miembros de espacios de nombres.
•Modernidad
Al
ser C# un lenguaje de última generación, incorpora elementos que sea demostrado
a lo largo del tiempo que son muy útiles para el programador, como tipos
decimales o booleanos, un tipo básico string ,así como una instrucción
que permita recorrer colecciones con facilidad(instrucción foreach). Estos elementos hay que
simularlos en otros lenguajes como C++ o Java.
•Orientado a objetos
C#
como lenguaje de última generación, y de propósito general, es orientado a
objetos. C# no permite la inclusión de funciones ni variables globales que no
estén incluidos en una definición de tipos, por lo que la orientación
a objetos es más pura y clara que en otros lenguajes como C++. Además, C#
soporta todas las características del paradigma de la programación orientada a
objetos, como son la
encapsulación,
la herencia y el polimorfismo
.
•Orientado a componentes
La
propia sintasix de C# incluye elementos propios del diseño de componentes que
otros lenguajes tienen que simular. La sintaxis de C# incluye por ejemplo
formas de definir propiedades, eventos o atributos.
•Recolección de basura
Como ya se comentó, todo lenguaje incluido en la plataforma
.NET tiene a su disposición el recolector de basura del CLR. Esto implica que
no es necesario incluir instrucciones de destrucción de objetos en el
lenguaje.
•Seguridad de tipos
C#
incluye mecanismos de control de acceso a tipos de datos, lo que garantiza
que no se produzcan errores difíciles de detectar como un acceso a memoria de
ningún objeto, por ejemplo. Para ello, el lenguaje provee de una serie de
normas de sintaxis, como por ejemplo no realizar conversiones entre tipos
que no sean compatibles. Además, no se pueden usar variables no
inicializadas previamente, y en el acceso atablas se hace una comprobación
de rangos para que no se excedan ninguno de los índices de la misma.
Se puede controlar así mismo los desbordamientos en operaciones
aritméticas, produciéndose excepciones cuando se produzcan.
•Instrucciones seguras
Para
evitar errores comunes como se producían programando en otros lenguajes,
en C# se han impuesto una serie de restricciones en el uso de instrucciones de
control más comunes. Por ejemplo, la evaluación de toda condición ha de ser una expresión
condicional y no aritmética, como ocurría por ejemplo en C o en C++. Así
se evitan errores por confusión del operador igualdad con el de
asignación. Otra restricción que se impone en la instrucción de selección
switch, imponiendo que toda selectora de la instrucción
finalice con una instrucción
break o goto que indique cuál es la siguiente acción a realizar.
•Unificación de tipos
En
C# todos los tipos derivan de una superclase común llamada System.Object, por lo que automáticamente heredarán todos los miembros
definidos en esta clase. Es decir, son objetos. A diferencia de Java, en C# esta
característica también se aplica para los tipos básicos.
•Extensión de los operadores básicos
Para
facilitar la legibilidad de código y conseguir que los nuevos tipos de datos
que se definan a través de las estructuras estén al mismo nivel que los
elementos predefinidos en el lenguaje, al igual que C++ pero a diferencia
de Java, C# permite redefinir el significado de la mayoría delos operadores
(incluidos el de la conversión) cuando se apliquen a diferentes tipos de
objetos.
Las
redefiniciones de operadores se hacen de manera inteligente, de modo que
a partir de una única definición de los operadores ++ y el compilador puede deducir automáticamente cómo
ejecutarlos de manera prefija y postfija. Definiendo operadores simples como la
suma, el compilador deduce como aplicar la versión de asignación compuesta (+=).
Además, para asegurar la consistencia, el compilador exige que los
operadores con opuesto (como por ejemplo el operador igualdad ==y su opuesto(=) siempre se redefinan por parejas.
•Extensión de modificadores
C#
ofrece, a través de los atributos, la posibilidad de añadir a
los metadatos del módulo resultante de la compilación de cualquier fuente información
adicional a la generada por el compilador que luego podrá ser consultada en
tiempo de ejecución a través de la biblioteca de reflexión de .NET.
•Eficiente
En
C#, todo el código incluye numerosas restricciones para garantizar su seguridad,
no permitiendo el uso de punteros. Sin embargo, y a diferencia de Java, existen
modificadores para saltarse esta restricción, pudiendo manipular objetos a
través de punteros. Para ello basta identificar regiones de código con el identificador
unsafe, y podrán usarse en ellas
punteros de forma similar a como se hace en C++. Esta característica puede
resultar de utilidad en situaciones en las que se necesite gran velocidad
de procesamiento.
•Compatible
Para facilitar la migración de
programadores de C++ o Java a C#, no sólo se mantiene una sintaxis muy
similar a la de los dos anteriores lenguajes, sino que el CLR también ofrece la
posibilidad de acceder a código nativo escrito como funciones sueltas no
orientadas a objetos, tales como las DLLs de la API de Win32.
Ejemplos de C#:
No hay comentarios:
Publicar un comentario