¿Qué es C#?
C# o C Sharp es un lenguaje de programación que está incluido en la Plataforma .NET y corre en el Lenguaje Común en Tiempo de Ejecución (CLR, Common Language Runtime). El primer lenguaje en importancia para el CLR es C#, mucho de lo que soporta la Plataforma .NET está escrito en C#.
C# intenta ser el lenguaje base para escribir aplicaciones .NET
C# deriva de C y C++, es moderno, simple y enteramente orientado a objetos, simplifica y moderniza a C++ en las áreas de clases, namespaces, sobrecarga de métodos y manejo de excepciones. Se elimino la complejidad de C++ para hacerlo más fácil de utilizar y menos propenso a errores.
Algunas características de C# son:
* C# provee el beneficio de un ambiente elegante y unificado.
* No soporta herencia múltiple, solamente el runtime .NET permite la herencia múltiple en la forma de interfaces, las cuales no pueden contener implementación.
* No maneja apuntadores, para emular la función de los apuntadores se utiliza delegates el cual provee las bases para el .NET event model.
* Por default trabaja con código administrado.
* La Plataforma .NET provee un colector de basura que es responsable de administrar la memoria en los programas C#.
* El manejo de errores está basado en excepciones.
* Soporta los conceptos como encapsulación, herencia y polimorfismo de la programación orientada a objetos.
* El Modelo completo de clases está construido en la cima del .NET Virtual Object System (VOS). El modelo de objetos es parte de la infraestructura y ya no forma parte del lenguaje de progrmación.
* No existen funciones globales, variables o constantes. Todo deber ser encapsulado dentro de la clase, como un miembro de la instancia (accesible via una instancia de clase) o un miembro estático (via el tipo).
* Los métodos que se definen en las clases son por default no virtuales (no pueden ser sobre escritos al derivar clases)
* Soporta los modificadores de acceso private, protected, public y agrega un cuarto modificador internal.
* Solamente se permite una base clase, si se requiere herencia múltiple es posible implementar intefaces.
* No es posible utilizar variables no inicializadas.
* No es posible hacer el cast de un entero a un tipo de referencia (objeto).
* Los parámetros que son pasados son type-safe.
* El soporte de versiones lo provee el CLR.
* Permite acceder a diferentes APIs a través de .NET Common Language Specification, el cual define el estádar de interoperabilidad entre lenguajes que se adhieran a este estándar.
* La Plataforma .NET provee un acceso transparente a COM.
* Soporta OLE
* Permite la interoperabilidad con APIs al estilo C y DLLs, esta característica para acceder a APIs nativas es llamada Platform Invocation Services (PInvoke)
* Por default el código es safe mode, pero es posible declarar clases o sólo métodos unsafe, esta declaración permite utilizar apuntadores, estructuras y almacenamiento de arreglos estáticos.
* C# depende del runtime que provee la Plataforma .NET, el runtime administra la ejecución de código.
Fuente:
http://www.canalvisualbasic.net/tema...arp.asp#cSharp