CSharp
Tutorial CSharp: Introducción a C#
Descubre C#, un lenguaje moderno y versátil, y la plataforma .NET para desarrollar aplicaciones multiplataforma con seguridad y rendimiento.
Aprende CSharp y certifícate¿Qué es C# y .NET?
C# (pronunciado "C Sharp") es un lenguaje de programación moderno, orientado a objetos y de tipado fuerte desarrollado por Microsoft. Creado por Anders Hejlsberg en el año 2000, C# fue diseñado como parte fundamental de la plataforma .NET para combinar la potencia de C++ con la simplicidad de Visual Basic, incorporando además las mejores características de lenguajes como Java.
La plataforma .NET es un ecosistema completo para el desarrollo y ejecución de aplicaciones que proporciona un entorno gestionado donde los programas C# se ejecutan. Este ecosistema incluye:
- El Common Language Runtime (CLR), que es el motor de ejecución que maneja la memoria, seguridad, manejo de excepciones y otros servicios del sistema.
- La Biblioteca de Clases Base (BCL), una extensa colección de clases, interfaces y tipos reutilizables que aceleran el desarrollo.
- Un sistema de compilación que traduce el código C# a un lenguaje intermedio (IL) independiente de la plataforma.
La relación entre C# y .NET es similar a la que existe entre Java y la JVM, o entre JavaScript y los navegadores web. C# es el lenguaje de programación, mientras que .NET es la plataforma donde se ejecuta el código.
Una de las características más destacadas de C# es su evolución constante. Desde su lanzamiento inicial, ha incorporado numerosas mejoras como:
- Propiedades automáticas que simplifican la creación de clases
- Tipos anónimos y expresiones lambda para programación funcional
- LINQ (Language Integrated Query) para consultas de datos integradas
- Async/await para programación asíncrona simplificada
- Pattern matching y otras características modernas
La plataforma .NET ha evolucionado significativamente a lo largo de los años. Inicialmente era una tecnología exclusiva de Windows, pero con la introducción de .NET Core (ahora .NET 5+), se ha convertido en una plataforma multiplataforma y de código abierto que funciona en Windows, macOS y Linux.
El ecosistema .NET está compuesto por varios componentes clave:
- .NET Runtime: El entorno de ejecución que implementa el CLR
- SDK de .NET: Herramientas para desarrollar aplicaciones
- ASP.NET: Framework para desarrollo web
- .NET MAUI: Para desarrollo de aplicaciones móviles y de escritorio
- Entity Framework: ORM para acceso a bases de datos
- NuGet: Sistema de gestión de paquetes
Una característica fundamental de .NET es su soporte para múltiples lenguajes. Aunque C# es el lenguaje más popular, la plataforma también soporta F# (funcional), Visual Basic .NET y otros lenguajes que compilan al mismo código intermedio y pueden interoperar entre sí.
La interoperabilidad es otra fortaleza clave de C# y .NET. El framework proporciona mecanismos para integrar código nativo, bibliotecas COM, y servicios web, permitiendo que las aplicaciones C# se comuniquen con sistemas existentes y tecnologías diversas.
El modelo de memoria de C# está diseñado para ser seguro y eficiente. A diferencia de C++, C# utiliza un recolector de basura que gestiona automáticamente la memoria, eliminando problemas comunes como fugas de memoria o punteros colgantes, mientras mantiene un alto rendimiento.
La seguridad de tipos es otra característica fundamental de C#. El compilador verifica que todas las operaciones respeten el sistema de tipos, detectando muchos errores en tiempo de compilación en lugar de en tiempo de ejecución, lo que resulta en aplicaciones más robustas.
En resumen, C# es un lenguaje de programación versátil y potente que, junto con la plataforma .NET, proporciona todas las herramientas necesarias para desarrollar aplicaciones modernas en diversos dominios, desde aplicaciones de escritorio y web hasta servicios en la nube, juegos y aplicaciones móviles.
Historia y versiones
El viaje de C# comenzó a finales de los años 90, cuando Microsoft estaba desarrollando lo que eventualmente se convertiría en la plataforma .NET. El lenguaje fue diseñado principalmente por Anders Hejlsberg, un reconocido ingeniero de software que anteriormente había trabajado en el desarrollo de Turbo Pascal y Delphi. El objetivo era crear un lenguaje moderno que combinara la potencia de C++ con la productividad de Visual Basic.
La primera aparición pública de C# ocurrió en julio de 2000, cuando Microsoft anunció la plataforma .NET. El nombre "C#" hace referencia al símbolo musical sostenido (♯), indicando que el lenguaje es una "nota más alta" que C++. Esta metáfora musical refleja la intención de mejorar y evolucionar a partir de los lenguajes C y C++.
C# 1.0 (2002)
La primera versión oficial de C# se lanzó junto con .NET Framework 1.0 en febrero de 2002. Esta versión inicial ya incluía los fundamentos del lenguaje que lo caracterizarían:
- Orientación a objetos completa
- Tipado fuerte
- Gestión automática de memoria
- Propiedades y eventos
- Delegados (similar a punteros a funciones pero seguros)
- Atributos para metadatos
Esta versión estableció a C# como un competidor directo de Java, con similitudes sintácticas pero con características distintivas propias.
C# 2.0 (2005)
Con el lanzamiento de .NET Framework 2.0, C# dio un importante salto evolutivo incorporando:
- Tipos genéricos: permitiendo crear clases y métodos con tipos parametrizados
- Métodos anónimos: precursores de las expresiones lambda
- Iteradores: simplificando la creación de colecciones enumerables
- Tipos parciales: permitiendo dividir la definición de una clase en múltiples archivos
- Tipos nullables: para representar valores nulos en tipos de valor
Estas características mejoraron significativamente la seguridad de tipos y la reutilización de código, estableciendo a C# como un lenguaje más maduro y sofisticado.
C# 3.0 (2007)
Lanzado con .NET Framework 3.5, esta versión transformó radicalmente el lenguaje con la introducción de:
- LINQ (Language Integrated Query): revolucionando la forma de consultar datos
- Expresiones lambda: simplificando la creación de delegados anónimos
- Tipos anónimos: permitiendo crear objetos sin definir clases explícitas
- Métodos de extensión: para añadir métodos a tipos existentes sin modificarlos
- Inicializadores de objetos y colecciones: simplificando la creación e inicialización
Estas características acercaron C# a paradigmas de programación funcional, ampliando significativamente su expresividad y flexibilidad.
C# 4.0 (2010)
Con .NET Framework 4.0, C# incorporó:
- Tipado dinámico: con la palabra clave
dynamic
- Parámetros opcionales y nombrados: facilitando la creación de APIs más flexibles
- Covarianza y contravarianza genérica: mejorando la flexibilidad del sistema de tipos
- Interoperabilidad mejorada con COM: facilitando la integración con tecnologías existentes
Estas características mejoraron la interoperabilidad con otros lenguajes y tecnologías, especialmente con lenguajes dinámicos y bibliotecas COM.
C# 5.0 (2012)
Lanzado con .NET Framework 4.5, esta versión se centró en la programación asíncrona:
- Async/await: simplificando enormemente la escritura de código asíncrono
- Atributos de información del llamador: para mejorar el diagnóstico y depuración
La introducción de async/await transformó la forma de escribir código asíncrono, eliminando la complejidad de los callbacks anidados y haciendo el código más legible y mantenible.
C# 6.0 (2015)
Con .NET Framework 4.6, C# continuó su evolución con mejoras sintácticas:
- Inicializadores de propiedades automáticas
- Expresiones nameof: para obtener el nombre de variables como cadena
- Interpolación de cadenas: simplificando la creación de cadenas formateadas
- Operador null-condicional: para simplificar comprobaciones de nulos
- Filtros de excepciones: para manejar excepciones de forma más granular
Estas características se centraron en hacer el código más conciso y expresivo, reduciendo la verbosidad.
C# 7.0-7.3 (2017-2018)
Estas versiones, lanzadas con .NET Framework 4.7 y posteriores, introdujeron:
- Tuplas y deconstrucción: facilitando el retorno y manejo de múltiples valores
- Pattern matching: para comprobaciones de tipo más expresivas
- Funciones locales: para definir funciones dentro de otras funciones
- Literales binarios y separadores de dígitos: mejorando la legibilidad de valores numéricos
- Ref returns y locals: para trabajar con referencias a variables
- Async main: simplificando programas asíncronos
Estas versiones incrementales añadieron características que mejoraron la expresividad y rendimiento del lenguaje.
C# 8.0 (2019)
Lanzado con .NET Core 3.0, esta versión marcó un hito importante:
- Tipos de referencia nullables: para detectar posibles referencias nulas en compilación
- Interfaces por defecto: permitiendo añadir métodos a interfaces con implementación predeterminada
- Pattern matching mejorado: con patrones de propiedad y switch expressions
- Índices y rangos: simplificando el acceso a elementos de colecciones
- Streams asíncronos: para trabajar con secuencias de datos asíncronas
- Funciones locales estáticas: para mejorar el rendimiento de funciones anidadas
Esta versión fue la primera en tener características exclusivas para .NET Core, marcando la transición hacia la nueva plataforma unificada.
C# 9.0 (2020)
Lanzado con .NET 5, introdujo:
- Records: un nuevo tipo de referencia inmutable para datos
- Init-only properties: para propiedades inmutables con sintaxis de inicialización
- Top-level statements: eliminando la necesidad de escribir una clase Program y método Main
- Pattern matching mejorado: con patrones relacionales y lógicos
- Mejoras en target typing: para inferencia de tipos más inteligente
Estas características reforzaron el soporte para programación funcional e inmutabilidad.
C# 10.0 (2021)
Con .NET 6, se añadieron:
- Structs de registro: extendiendo el concepto de records a tipos de valor
- Mejoras en interpolación de cadenas: permitiendo constantes interpoladas
- Declaraciones globales using: para simplificar importaciones
- Lambdas mejoradas: con inferencia de tipos natural y atributos
- Tipos de retorno covariantes: para mayor flexibilidad en herencia
C# 11.0 (2022)
Lanzado con .NET 7, incorporó:
- Raw string literals: para cadenas multilínea sin secuencias de escape
- Patrón list: para hacer pattern matching sobre colecciones
- Tipos requeridos: para forzar inicialización de propiedades
- Expresiones numéricas genéricas: para operaciones matemáticas genéricas
- UTF-8 string literals: para trabajar con datos binarios más eficientemente
La evolución de C# refleja un equilibrio entre mantener la compatibilidad con código existente mientras se incorporan características modernas de otros paradigmas de programación. Cada nueva versión ha añadido características que hacen el código más expresivo, seguro y mantenible, consolidando a C# como uno de los lenguajes más versátiles y completos del panorama actual.
Esta evolución constante, junto con la transición de .NET Framework a .NET Core y finalmente a .NET unificado, ha transformado C# de un lenguaje principalmente para Windows a una plataforma verdaderamente multiplataforma y de código abierto, ampliando enormemente su alcance y relevancia en el desarrollo de software moderno.
Áreas de aplicación
C# se ha consolidado como un lenguaje versátil que puede utilizarse en numerosos ámbitos del desarrollo de software. Su flexibilidad, potencia y el respaldo de la plataforma .NET lo convierten en una opción ideal para múltiples escenarios profesionales.
Desarrollo de aplicaciones de escritorio
El desarrollo de aplicaciones Windows ha sido tradicionalmente uno de los puntos fuertes de C#. A través de tecnologías como:
- Windows Forms: Framework clásico para interfaces gráficas con un diseñador visual intuitivo
- WPF (Windows Presentation Foundation): Permite crear interfaces modernas con separación entre diseño y lógica mediante XAML
- .NET MAUI: La evolución multiplataforma que permite desarrollar aplicaciones para Windows, macOS, iOS y Android con una base de código compartida
Estas tecnologías facilitan la creación de aplicaciones empresariales, herramientas de productividad y software especializado con interfaces ricas y responsivas.
Desarrollo web
C# es ampliamente utilizado en el desarrollo web a través de ASP.NET, que ofrece diferentes modelos:
- ASP.NET Core MVC: Para aplicaciones web siguiendo el patrón Modelo-Vista-Controlador
- Blazor: Permite crear aplicaciones web interactivas usando C# en lugar de JavaScript, tanto en el servidor como en el navegador
- Web API: Para crear servicios RESTful y microservicios
- Razor Pages: Un modelo de programación basado en páginas para escenarios más sencillos
La plataforma proporciona un rendimiento excepcional, seguridad integrada y escalabilidad para aplicaciones web desde pequeños sitios hasta grandes portales empresariales.
Desarrollo de videojuegos
El motor Unity, uno de los más populares para desarrollo de videojuegos, utiliza C# como su lenguaje principal de scripting. Esto ha posicionado a C# como una herramienta fundamental en la industria de los videojuegos para:
- Juegos 2D y 3D multiplataforma
- Experiencias de realidad virtual y aumentada
- Simulaciones interactivas
- Aplicaciones de visualización
La combinación de la facilidad de uso de C# con el potente motor gráfico de Unity ha democratizado el desarrollo de videojuegos, permitiendo a equipos de todos los tamaños crear experiencias interactivas sofisticadas.
Desarrollo móvil
Aunque no fue su enfoque inicial, C# se ha convertido en una opción relevante para el desarrollo móvil:
- .NET MAUI: Permite crear aplicaciones nativas para Android, iOS, macOS y Windows con una única base de código
- Xamarin: La tecnología predecesora de MAUI, que sigue siendo ampliamente utilizada para desarrollo móvil multiplataforma
Estas tecnologías permiten a los desarrolladores de C# aprovechar sus conocimientos existentes para crear aplicaciones móviles con interfaces nativas y alto rendimiento.
Computación en la nube y microservicios
C# es una excelente opción para el desarrollo de aplicaciones cloud y arquitecturas de microservicios:
- Azure Functions: Para computación serverless y procesamiento de eventos
- ASP.NET Core: Optimizado para contenedores y despliegues en la nube
- gRPC: Para comunicación eficiente entre servicios
La integración nativa con Azure, la plataforma cloud de Microsoft, facilita el desarrollo, despliegue y escalado de aplicaciones C# en entornos cloud, con soporte para contenedores, Kubernetes y otros servicios modernos.
Internet de las cosas (IoT)
Con la introducción de .NET IoT, C# se ha expandido al mundo de los dispositivos embebidos y la computación de borde:
- Desarrollo para Raspberry Pi y dispositivos similares
- Integración con sensores y actuadores mediante bibliotecas especializadas
- Procesamiento de datos IoT y comunicación con la nube
Esta área representa una expansión relativamente reciente para C#, permitiendo a los desarrolladores aplicar sus habilidades en escenarios de computación física y dispositivos conectados.
Inteligencia artificial y machine learning
C# se integra perfectamente con herramientas de IA y aprendizaje automático:
- ML.NET: Framework de machine learning para .NET que permite integrar modelos de aprendizaje automático en aplicaciones C#
- TensorFlow.NET: Bindings para utilizar TensorFlow desde C#
- Azure Cognitive Services: Servicios de IA preentrenados fácilmente consumibles desde aplicaciones C#
Estas tecnologías permiten incorporar capacidades de inteligencia artificial en aplicaciones tradicionales sin necesidad de cambiar de plataforma o lenguaje.
Aplicaciones empresariales
El desarrollo empresarial sigue siendo uno de los puntos fuertes de C#, especialmente para:
- Sistemas de gestión empresarial (ERP, CRM)
- Aplicaciones financieras y bancarias
- Software de gestión documental
- Sistemas de procesamiento de datos a gran escala
Las características de C# como la seguridad de tipos, la gestión automática de memoria y su integración con bases de datos mediante Entity Framework lo hacen ideal para aplicaciones empresariales robustas y mantenibles.
Realidad virtual y aumentada
Además de su uso en Unity, C# se utiliza en el desarrollo de aplicaciones de realidad mixta:
- Microsoft HoloLens: Desarrollo de aplicaciones holográficas con C# y XAML
- Windows Mixed Reality: Creación de experiencias inmersivas para dispositivos VR
La combinación de C# con estas tecnologías permite crear experiencias inmersivas para entornos industriales, educativos y de entretenimiento.
DevOps y herramientas de desarrollo
C# también se utiliza para crear herramientas de desarrollo y automatización:
- Extensiones para Visual Studio y Visual Studio Code
- Scripts de automatización de compilación y despliegue
- Herramientas de análisis de código y generación de informes
La capacidad de C# para manipular metadatos y su potente sistema de reflexión lo hacen adecuado para crear herramientas que asistan en el proceso de desarrollo.
El ecosistema .NET continúa expandiéndose a nuevas áreas, y con cada evolución de la plataforma, C# encuentra aplicación en campos emergentes, consolidándose como un lenguaje verdaderamente polivalente adaptado a las necesidades tecnológicas actuales y futuras.
Otras lecciones de CSharp
Accede a todas las lecciones de CSharp y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A C#
Introducción Y Entorno
Creación De Proyecto C#
Introducción Y Entorno
Variables Y Constantes
Sintaxis
Tipos De Datos
Sintaxis
Operadores
Sintaxis
Control De Flujo
Sintaxis
Funciones
Sintaxis
Estructuras De Control Iterativo
Sintaxis
Interpolación De Strings
Sintaxis
Estructuras De Control Condicional
Sintaxis
Manejo De Valores Nulos
Sintaxis
Clases Y Encapsulación
Programación Orientada A Objetos
Objetos
Programación Orientada A Objetos
Constructores Y Destructores
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Genéricos
Programación Orientada A Objetos
Métodos Virtuales Y Sobrecarga
Programación Orientada A Objetos
Clases Abstractas
Programación Orientada A Objetos
Interfaces
Programación Orientada A Objetos
Propiedades Y Encapsulación
Programación Orientada A Objetos
Métodos De Extensión
Programación Orientada A Objetos
Clases Y Objetos
Programación Orientada A Objetos
Clases Parciales
Programación Orientada A Objetos
Miembros Estáticos
Programación Orientada A Objetos
Tuplas Y Tipos Anónimos
Programación Orientada A Objetos
Arrays Y Listas
Colecciones Y Linq
Diccionarios
Colecciones Y Linq
Conjuntos, Colas Y Pilas
Colecciones Y Linq
Uso De Consultas Linq
Colecciones Y Linq
Linq Avanzado
Colecciones Y Linq
Colas Y Pilas
Colecciones Y Linq
Conjuntos
Colecciones Y Linq
Linq Básico
Colecciones Y Linq
Delegados Funcionales
Programación Funcional
Records
Programación Funcional
Expresiones Lambda
Programación Funcional
Linq Funcional
Programación Funcional
Fundamentos De La Programación Funcional
Programación Funcional
Pattern Matching
Programación Funcional
Testing Unitario Con Xunit
Testing
Excepciones
Excepciones
Delegados
Programación Asíncrona
Eventos
Programación Asíncrona
Lambdas
Programación Asíncrona
Uso De Async Y Await
Programación Asíncrona
Tareas
Programación Asíncrona
Ejercicios de programación de CSharp
Evalúa tus conocimientos de esta lección Introducción a C# con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
CRUD en C# de modelo Customer sobre una lista
Arrays y listas
Objetos
Excepciones
Eventos
Lambdas
Diccionarios en C#
Variables y constantes
Tipos de datos
Herencia
Operadores
Uso de consultas LINQ
Clases y encapsulación
Uso de consultas LINQ
Excepciones
Control de flujo
Eventos
Diccionarios
Tipos de datos
Conjuntos, colas y pilas
Lambdas
Conjuntos, colas y pilas
Uso de async y await
Tareas
Constructores y destructores
Operadores
Arrays y listas
Polimorfismo
Polimorfismo
Variables y constantes
Proyecto colecciones y LINQ en C#
Clases y encapsulación
Creación de proyecto C#
Uso de async y await
Funciones
Delegados
Delegados
Constructores y destructores
Objetos
Control de flujo
Funciones
Tareas
Proyecto sintaxis en C#
Herencia C Sharp
OOP en C Sharp
Diccionarios
Introducción a C#
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender qué es C# y su relación con la plataforma .NET.
- Conocer la evolución histórica y las principales versiones de C# y sus características destacadas.
- Identificar las áreas de aplicación más comunes y relevantes de C# en el desarrollo de software.
- Entender la arquitectura y componentes clave del ecosistema .NET.
- Reconocer las ventajas de C# en términos de seguridad, interoperabilidad y programación moderna.