Introducción al lenguaje C# y .NET FrameworkIntroduction to the C# Language and the .NET Framework

C# es un lenguaje elegante, con seguridad de tipos y orientado a objetos, que permite a los desarrolladores crear una gran variedad de aplicaciones seguras y sólidas que se ejecutan en .NET Framework.NET Framework .NET.C# is an elegant and type-safe object-oriented language that enables developers to build a variety of secure and robust applications that run on the .NET Framework.NET Framework. Puede usar C# para crear aplicaciones cliente de Windows, servicios web XML, componentes distribuidos, aplicaciones cliente-servidor, aplicaciones de base de datos y muchas, muchas más cosas.You can use C# to create Windows client applications, XML Web services, distributed components, client-server applications, database applications, and much, much more. Visual C# proporciona un editor de código avanzado, prácticos diseñadores de interfaz de usuario, un depurador integrado y muchas otras herramientas que facilitan el desarrollo de aplicaciones basadas en el lenguaje C# y .NET Framework.NET Framework.Visual C# provides an advanced code editor, convenient user interface designers, integrated debugger, and many other tools to make it easier to develop applications based on the C# language and the .NET Framework.NET Framework.

Nota

En la documentación de Visual C# se supone que comprende los conceptos básicos de programación.The Visual C# documentation assumes that you have an understanding of basic programming concepts. Si es principiante, puede que quiera examinar Visual C# Express, que está disponible en Internet.If you are a complete beginner, you might want to explore Visual C# Express, which is available on the Web. También puede aprovechar los libros y recursos web sobre C# para aprender sobre habilidades prácticas de programación.You can also take advantage of books and Web resources about C# to learn practical programming skills.

Lenguaje C#C# Language

La sintaxis de C# es muy expresiva, pero también sencilla y fácil de aprender.C# syntax is highly expressive, yet it is also simple and easy to learn. Cualquier persona familiarizada con C, C++ o Java, reconocerá al instante la sintaxis de llaves de C#.The curly-brace syntax of C# will be instantly recognizable to anyone familiar with C, C++ or Java. Los desarrolladores que conocen cualquiera de estos lenguajes puede empezar normalmente a trabajar en C# de forma productiva en un espacio muy corto de tiempo.Developers who know any of these languages are typically able to begin to work productively in C# within a very short time. La sintaxis de C# simplifica muchas de las complejidades de C++ y proporciona características eficaces, como tipos de valor que aceptan valores NULL, enumeraciones, delegados, expresiones lambda y acceso directo a memoria, que no se encuentran en Java.C# syntax simplifies many of the complexities of C++ and provides powerful features such as nullable value types, enumerations, delegates, lambda expressions and direct memory access, which are not found in Java. C# admite métodos y tipo genéricos, que proporcionan una mayor seguridad de tipos y rendimiento, e iteradores, que permiten a los implementadores de clases de colecciones definir comportamientos de iteración personalizados que son fáciles de usar por el código de cliente.C# supports generic methods and types, which provide increased type safety and performance, and iterators, which enable implementers of collection classes to define custom iteration behaviors that are simple to use by client code. Las expresiones Language-Integrated Query (LINQ)Language-Integrated Query (LINQ) convierten la consulta fuertemente tipada en una construcción de lenguaje de primera clase.Language-Integrated Query (LINQ)Language-Integrated Query (LINQ) expressions make the strongly-typed query a first-class language construct.

En cuanto lenguaje orientado a objetos, C# admite los conceptos de encapsulación, herencia y polimorfismo.As an object-oriented language, C# supports the concepts of encapsulation, inheritance, and polymorphism. Todas las variables y métodos, incluido el método Main, el punto de entrada de la aplicación, se encapsulan dentro de las definiciones de clase.All variables and methods, including the Main method, the application's entry point, are encapsulated within class definitions. Una clase puede heredar directamente de una clase primaria, pero puede implementar cualquier número de interfaces.A class may inherit directly from one parent class, but it may implement any number of interfaces. Los métodos que invalidan los métodos virtuales en una clase primaria requieren la palabra clave override como una manera de evitar redefiniciones accidentales.Methods that override virtual methods in a parent class require the override keyword as a way to avoid accidental redefinition. En C#, un struct es como una clase sencilla; es un tipo asignado en la pila que puede implementar interfaces pero que no admite herencia.In C#, a struct is like a lightweight class; it is a stack-allocated type that can implement interfaces but does not support inheritance.

Además de estos principios básicos orientados a objetos, C# facilita el desarrollo de componentes de software mediante varias construcciones de lenguaje innovadoras, incluidas las siguientes:In addition to these basic object-oriented principles, C# makes it easy to develop software components through several innovative language constructs, including the following:

  • Signaturas de método encapsulado llamadas delegados, que permiten notificaciones de eventos con seguridad de tipos.Encapsulated method signatures called delegates, which enable type-safe event notifications.

  • Propiedades, que actúan como descriptores de acceso para variables miembro privadas.Properties, which serve as accessors for private member variables.

  • Atributos, que proporcionan metadatos declarativos sobre tipos en tiempo de ejecución.Attributes, which provide declarative metadata about types at run time.

  • Comentarios de doc.umentación XML insertadosInline XML documentation comments.

  • Language-Integrated Query (LINQ)Language-Integrated Query (LINQ) que proporciona funcionalidades de consulta integradas en diversos orígenes de datos. which provides built-in query capabilities across a variety of data sources.

Si tiene que interactuar con otro software de Windows, como objetos COM o archivos DLL nativos de Win32, puede hacerlo en C# mediante un proceso denominado "Interoperabilidad".If you have to interact with other Windows software such as COM objects or native Win32 DLLs, you can do this in C# through a process called "Interop." La interoperabilidad permite que los programas de C# hagan casi todo lo que puede hacer una aplicación C++ nativa.Interop enables C# programs to do almost anything that a native C++ application can do. C# admite incluso el uso de punteros y el concepto de código "no seguro" en los casos en los que el acceso directo a memoria es absolutamente crítico.C# even supports pointers and the concept of "unsafe" code for those cases in which direct memory access is absolutely critical.

El proceso de compilación de C# es simple en comparación con C y C++ y más flexible que en Java.The C# build process is simple compared to C and C++ and more flexible than in Java. No hay ningún archivo de encabezado independiente y ningún requisito de declaración de métodos y tipos en un orden en particular.There are no separate header files, and no requirement that methods and types be declared in a particular order. Un archivo de código fuente de C# puede definir cualquier número de clases, structs, interfaces y eventos.A C# source file may define any number of classes, structs, interfaces, and events.

Los siguientes son recursos adicionales de C#:The following are additional C# resources:

Arquitectura de la plataforma .NET Framework.NET Framework Platform Architecture

Los programas de C# se ejecutan en .NET Framework.NET Framework, un componente integral de Windows que incluye un sistema de ejecución virtual llamado Common Language Runtime (CLR) y un conjunto unificado de bibliotecas de clases.C# programs run on the .NET Framework.NET Framework, an integral component of Windows that includes a virtual execution system called the common language runtime (CLR) and a unified set of class libraries. El CLR es la implementación comercial de Microsoft de Common Language Infrastructure (CLI), un estándar internacional que es la base para la creación de entornos de ejecución y desarrollo en los que los lenguajes y las bibliotecas trabajan juntos sin problemas.The CLR is the commercial implementation by Microsoft of the common language infrastructure (CLI), an international standard that is the basis for creating execution and development environments in which languages and libraries work together seamlessly.

El código fuente escrito en C# se compila en un lenguaje intermedio (IL) que guarda conformidad con la especificación de CLI.Source code written in C# is compiled into an intermediate language (IL) that conforms to the CLI specification. El código y los recursos IL, como mapas de bits y cadenas, se almacenan en disco en un archivo ejecutable denominado ensamblado, normalmente con la extensión .exe o .dll.The IL code and resources, such as bitmaps and strings, are stored on disk in an executable file called an assembly, typically with an extension of .exe or .dll. Un ensamblado contiene un manifiesto que proporciona información sobre los tipos, la versión, la referencia cultural y los requisitos de seguridad del ensamblado.An assembly contains a manifest that provides information about the assembly's types, version, culture, and security requirements.

Cuando se ejecuta el programa de C#, el ensamblado se carga en el CLR, el cual podría realizar diversas acciones en función de la información en el manifiesto.When the C# program is executed, the assembly is loaded into the CLR, which might take various actions based on the information in the manifest. Luego, si se cumplen los requisitos de seguridad, el CLR realiza la compilación Just in time (JIT) para convertir el código IL en instrucciones máquina nativas.Then, if the security requirements are met, the CLR performs just in time (JIT) compilation to convert the IL code to native machine instructions. El CLR también proporciona otros servicios relacionados con la recolección de elementos no utilizados, el control de excepciones y la administración de recursos.The CLR also provides other services related to automatic garbage collection, exception handling, and resource management. El código que se ejecuta en el CLR se conoce a veces como "código administrado", a diferencia del "código no administrado" que se compila en lenguaje de máquina nativo destinado a un sistema específico.Code that is executed by the CLR is sometimes referred to as "managed code," in contrast to "unmanaged code" which is compiled into native machine language that targets a specific system. En el siguiente diagrama se ilustran las relaciones de tiempo de compilación y tiempo de ejecución de archivos de código fuente de C#, las bibliotecas de clases de .NET Framework, los ensamblados y el CLR.The following diagram illustrates the compile-time and run-time relationships of C# source code files, the .NET Framework class libraries, assemblies, and the CLR.

De código fuente de C# a ejecución de máquinaFrom C# source code to machine execution

la interoperabilidad entre lenguajes es una característica principal de .NET Framework.NET Framework.Language interoperability is a key feature of the .NET Framework.NET Framework. Debido a que el código IL generado por el compilador de C# cumple la especificación de tipo común (CTS), este código puede interactuar con el código generado a partir de las versiones .NET de Visual Basic, Visual C++ o cualquiera de los más de 20 lenguajes compatibles con CTS.Because the IL code produced by the C# compiler conforms to the Common Type Specification (CTS), IL code generated from C# can interact with code that was generated from the .NET versions of Visual Basic, Visual C++, or any of more than 20 other CTS-compliant languages. Un solo ensamblado puede contener varios módulos escritos en diferentes lenguajes .NET y los tipos se pueden hacer referencia mutuamente igual que si estuvieran escritos en el mismo lenguaje.A single assembly may contain multiple modules written in different .NET languages, and the types can reference each other just as if they were written in the same language.

Además de los servicios de tiempo de ejecución, .NET Framework.NET Framework también incluye una amplia biblioteca de más de 4000 clases organizadas en espacios de nombres que proporcionan una gran variedad de funciones útiles para todo, desde la entrada y la salida de archivos, pasando por la manipulación de cadenas para el análisis XML, hasta controles de formularios Windows Forms.In addition to the run time services, the .NET Framework.NET Framework also includes an extensive library of over 4000 classes organized into namespaces that provide a wide variety of useful functionality for everything from file input and output to string manipulation to XML parsing, to Windows Forms controls. La aplicación de C# típica usa la biblioteca de clases .NET Framework.NET Framework de forma extensa para administrar tareas comunes de infraestructura.The typical C# application uses the .NET Framework.NET Framework class library extensively to handle common "plumbing" chores.

Para más información sobre .NET Framework, consulte Introducción a Microsoft .NET Framework.For more information about the .NET Framework, see Overview of the Microsoft .NET Framework.

Vea tambiénSee also