Professional Documents
Culture Documents
objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que
despus fue aprobado como un estndar por la ECMA (ECMA-334) e ISO (ISO/IEC
23270). C# es uno de los lenguajes de programacin diseados para la infraestructura de
lenguaje comn.
Su sintaxis bsica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET,
similar al de Java, aunque incluye mejoras derivadas de otros lenguajes.
El nombre C Sharp fue inspirado por la notacin musical, donde '#' (sostenido, en
ingls sharp) indica que la nota (C es la nota do en ingls) es un semitono ms alta,
sugiriendo que C# es superior a C/C++. Adems, el signo '#' se compone de cuatro signos
'+' pegados.2
Aunque C# forma parte de la plataforma .NET, sta es una API, mientras que C# es
un lenguaje de programacin independiente diseado para generar programas sobre dicha
plataforma. Ya existe un compilador implementado que provee el marco Mono - DotGNU,
el cual genera programas para distintas plataformas como Windows, Unix, Android, iOS,
Windows Phone, Mac OS y GNU/Linux
Historia
Durante el desarrollo de la plataforma .NET, las bibliotecas de clases fueron escritas
originalmente usando un sistema de cdigo gestionado llamado Simple Managed C (SMC).
En enero de 1999, Anders Hejlsberg form un equipo con la misin de desarrollar un nuevo
lenguaje de programacin llamado Cool (Lenguaje C orientado a objetos). Este nombre
tuvo que ser cambiado debido a problemas de marca, pasando a llamarse C#.3 La biblioteca
de clases de la plataforma .NET fue migrada entonces al nuevo lenguaje.
Hejlsberg lider el proyecto de desarrollo de C#. Anteriormente, ya haba
participado en el desarrollo de otros lenguajes como Turbo Pascal, Delphi y J++.
Lenguaje C#
La sintaxis de C# es muy expresiva, pero tambin es sencilla y fcil de aprender. La sintaxis
de C# basada en signos de llave podr ser reconocida inmediatamente por cualquier
persona familiarizada con C, C++ o Java. Los desarrolladores que conocen cualquiera de
estos lenguajes pueden empezar a trabajar de forma productiva en C# en un plazo muy
breve. La sintaxis de C# simplifica muchas de las complejidades de C++ y proporciona
caractersticas eficaces tales como tipos de valor que admiten valores NULL,
enumeraciones, delegados, expresiones lambda y acceso directo a memoria, que no se
encuentran en Java. C# admite mtodos y tipos genricos, que proporcionan mayor
rendimiento y seguridad de tipos, e iteradores, que permiten a los implementadores de
clases de coleccin definir comportamientos de iteracin personalizados que el cdigo
cliente puede utilizar fcilmente. Las expresiones Language-Integrated Query (LINQ)
convierten la consulta fuertemente tipada en una construccin de lenguaje de primera clase.
Si necesita interactuar con otro software de Windows, como objetos COM o archivos DLL
nativos de Win32, podr hacerlo en C# mediante un proceso denominado
"interoperabilidad". La interoperabilidad habilita los programas de C# para que puedan
realizar prcticamente las mismas tareas que una aplicacin C++ nativa. C# admite incluso
el uso de punteros y el concepto de cdigo "no seguro" en los casos en que el acceso directo
a la memoria es totalmente crtico.
El proceso de compilacin de C# es simple en comparacin con el de C y C++, y es ms
flexible que en Java. No hay archivos de encabezado independientes, ni se requiere que los
mtodos y los tipos se declaren en un orden determinado. Un archivo de cdigo fuente de
C# puede definir cualquier nmero de clases, structs, interfaces y eventos.
A continuacin se enumeran otros recursos de C#:
Para obtener informacin detallada sobre aspectos concretos del lenguaje C#, vea
Referencia de C#.
Para buscar los artculos y recursos ms recientes del equipo de Visual C#, vea
Visual C#.
Especificaciones
Sencillez de uso
C# elimina muchos elementos aadidos por otros lenguajes y quefacilitan su
uso y compresin, como por ejemplo ficheros de cabecera, oficheros fuentes
IDL1 .12. Es por ello que se dice que C# esautocontenido. Adems, no se
incorporan al lenguaje elementos pocotiles, como por ejemplo macros,
herencia mltiple u operadoresdiferentes al operador de aceso a mtodos
(operador punto) paraacceder a miembros de espacios de nombres.
Modernidad
Al ser C# un lenguaje de ltima generacin, incorpora elementos que seha
demostrado a lo largo del tiempo que son muy tiles para elprogramador,
como tipos decimales o
booleanos
, un tipo bsico
string
,as como una instrucin que permita recorrer colecciones con
facilidad(instruccin
foreach
Orientado a objetos
C# como lenguaje de ltima generacin, y de propsito general, esorientado a
objetos. C# no permite la inclusin de funciones ni variablesglobales que no
estn incluidos en una definicin de tipos, por lo que laorientacin a objetos es
ms pura y clara que en otros lenguajes comoC++. Adems, C# soporta todas
las caractersticas del paradigma de laprogramacin orientada a objetos, como
son la encapsulacin, laherencia y el polimorfismo
Orientado a componentes
La propia sintasix de C# incluye elementos propios del diseo decomponentes
que otros lenguajes tienen que simular. La sintaxis de C#incluye por ejemplo
formas de definir propiedades, eventoso atributos
Recoleccin de basura
Como ya se coment, todo lenguaje incluido en la plataforma .NET tienea su
disposicin el recolector de basura del CLR. Esto implica que no esnecesario
incluir instrucciones de destruccin de objetos en el lenguaje.
Seguridad de tipos
C# incluye mecanismos de control de acceso a tipos de datos, lo quegarantiza
que no se produzcan errores difciles de detectar como unacceso a memoria de
ningn objeto, por ejemplo. Para ello, el lenguajeprovee de una serie de
normas de sintaxis, como por ejemplo no realizarconversiones entre tipos que
no sean compatibles. Adems, no sepueden usar variables no inicializadas
previamente, y en el acceso atablas se hace una comprobacin de rangos para
que no se excedanninguno de los ndices de la misma. Se puede controlar as
mismo los