Tomado de la página de microsoft..--Lenguaje intuitivo basado en C++Utilice un lenguaje basado en la sintaxis de C++, inmediatamente familiar para los programadores de C++ y Java, así como nuevas estructuras de lenguaje intuitivas que simplifican enormemente las tareas de programación.---Interoperabilidad.Utilice código "no seguro" para activar API de Windows nativas, utilice componentes COM ya desarrollados y aproveche los controles Microsoft ActiveX® existentes para integrar sin problemas aplicaciones y componentes existentes.---Lenguaje moderno orientado a componentesAproveche las ventajas de la compatibilidad inherente con propiedades, indizadores, delegados, matrices únicas y multidimensionales, herencia avanzada, atributos, control de versiones y comentarios XML.---Entorno sólido de programación para el WebCree soluciones basadas en Web con C# utilizando el Diseñador de Web Forms y el Diseñador XML compartidos. Los programadores pueden utilizar también las características de IntelliSense y la capacidad para completar etiquetas; o bien, elegir el editor WYSIWYG (lo que ve es lo que se imprime) para poder crear aplicaciones Web interactivas arrastrando y colocando elementos. ---Entorno completo de programación de aplicaciones para WindowsCree visualmente aplicaciones basadas en Windows. Con la herencia visual, los programadores pueden simplificar enormemente la creación de aplicaciones basadas en Windows, centralizando en formularios primarios la lógica común y la interfaz de usuario para toda la solución. Utilizando delimitadores y acoplamiento de controles, los programadores pueden generar formularios redimesionables automáticamente, mientras el editor de menús in situ permite crear menús de manera visual directamente desde el Diseñador de Windows Forms.---Compatibilidad con aplicaciones móvilesLlegue hasta la gama más amplia de dispositivos compatibles con Internet utilizando las características de Mobile Internet de Visual Studio .NET. Estas características ofrecen a los programadores una única interfaz Web móvil para proporcionar compatibilidad con una amplia gama de dispositivos Web, incluidos WML 1.1 para teléfonos móviles WAP, HTML compacto (cHTML) para teléfonos i-mode y HTML para Pocket PC, dispositivos de mano y localizadores (pagers).Visual C# .NET es un completo conjunto de herramientas para la creación de servicios Web XML y aplicaciones basadas en Microsoft .NET para Microsoft Windows® y el Web. Este eficaz paquete de programación, que utiliza el lenguaje de programación orientado a componentes C#, ofrece a los programadores de nivel inicial o intermedio con conocimientos de C++ o Java un entorno y un lenguaje modernos para la creación de software de próxima generación. Visual C# .NET ofrece funcionalidad superior para optimizar procesos empresariales, por ejemplo:Compatibilidad con el diseño, la programación y la implementación de servicios Web XML con rapidez. Diseñadores de formularios y controles visuales para crear aplicaciones basadas en Windows muy completas. Herramientas y servicios de diseño para crear eficaces soluciones de Microsoft .NET basadas en servidor. Con Visual C# .NET, los programadores pueden crear soluciones para una amplísima gama de clientes, incluidos Windows, el Web y dispositivos de cliente ligero. Con este elegante y moderno lenguaje de programación, los programadores pueden aprovechar sus conocimientos y habilidades de C++ y Java para disfrutar de una experiencia satisfactoria con la plataforma Microsoft .NET.
Tomado de :Programming C#Jesse LibertyPublisher: O'ReillyFirst Edition July 2001ISBN: 0-596-00117-7, 680 pages1.4 The C# LanguageThe C# language is disarmingly simple, with only about 80 keywords and a dozen built-in datatypes,but C# is highly expressive when it comes to implementing modern programming concepts. C#includes all the support for structured, component-based, object-oriented programming that oneexpects of a modern language built on the shoulders of C++ and Java.The C# language was developed by a small team led by two distinguished Microsoft engineers,Anders Hejlsberg and Scott Wiltamuth. Hejlsberg is also known for creating Turbo Pascal, a popularlanguage for PC programming, and for leading the team that designed Borland Delphi, one of the firstsuccessful integrated development environments for client/server programming.At the heart of any object-oriented language is its support for defining and working with classes.Classes define new types, allowing you to extend the language to better model the problem you are20trying to solve. C# contains keywords for declaring new classes and their methods and properties, andfor implementing encapsulation, inheritance, and polymorphism, the three pillars of object-orientedprogramming.In C# everything pertaining to a class declaration is found in the declaration itself. C# class definitionsdo not require separate header files or Interface Definition Language (IDL) files. Moreover, C#supports a new XML style of inline documentation that greatly simplifies the creation of online and printreference documentation for an application.C# also supports interfaces, a means of making a contract with a class for services that the interfacestipulates. In C#, a class can inherit from only a single parent, but a class can implement multipleinterfaces. When it implements an interface, a C# class in effect promises to provide the functionalitythe interface specifies.C# also provides support for structs, a concept whose meaning has changed significantly from C++. InC#, a struct is a restricted, lightweight type that, when instantiated, makes fewer demands on theoperating system and on memory than a conventional class does. A struct can't inherit from a class orbe inherited from, but a struct can implement an interface.C# provides component-oriented features, such as properties, events, and declarative constructs(called attributes). Component-oriented programming is supported by the CLR's support for storingmetadata with the code for the class. The metadata describes the class, including its methods andproperties, as well as its security needs and other attributes, such as whether it can be serialized; thecode contains the logic necessary to carry out its functions. A compiled class is thus a self-containedunit; therefore, a hosting environment that knows how to read a class' metadata and code needs noother information to make use of it. Using C# and the CLR, it is possible to add custom metadata to aclass by creating custom attributes. Likewise, it is possible to read class metadata using CLR typesthat support reflection.An assembly is a collection of files that appear to the programmer to be a single dynamic link library(DLL) or executable (EXE). In .NET, an assembly is the basic unit of reuse, versioning, security, anddeployment. The CLR provides a number of classes for manipulating assemblies.A final note about C# is that it also provides support for directly accessing memory using C++ stylepointers and keywords for bracketing such operations as unsafe, and for warning the CLR garbagecollector not to collect objects referenced by pointers until they are released.