C# es un lenguaje de programación sencillo pero potente, destinado sobre todos a los desarrolladores de aplicaciones que utilicen Microsoft .NET Framework. En su versión 5.0 incorpora importantes novedades como la facilidad para realizar tareas asíncronas utilizando las claves async y await, el uso de los atributos Caller Info para obtener información sobre el elemento que realiza la llamada a un método, y muchas nuevas características. Esta obra, a través de un lenguaje sencillo, directo y con un enfoque práctico paso a paso, permitirá al lector dominar desde las técnicas básicas cómo controlar el flujo de ejecución y la gestión de errores, a construir soluciones completas con Visual Studio, a utilizar propiedades avanzadas como los atributos y los tipos dinámicos e incluso a construir aplicaciones avanzadas para la Tienda Windows, para Windows y para la Web utilizando C# 5.0.ÍndicePrólogo Introducción Público y organización Convenciones Código fuente Parte I. Fundamentos de C 1. .NET Framework y C# .NET Framework Common Language Runtime Common Type System Common Intermediate Language Virtual Execution System Gestión de la memoria y recolección de basura La librería de clases del sistema Espacios de nombres Plataforma de cálculo paralelo Dynamic Language Runtime El lenguaje C# Tipos Declaraciones y expresiones Variables y constantes Identificadores y palabras clave Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 2. Presentación de Visual Studio Presentación de las versiones de Visual Studio Soluciones, proyectos y elementos Escribir el primer programa Crear un proyecto Añadir declaraciones al programa Ejecutar la aplicación Utilizar Visual Studio para depurar el código El compilador y los errores de ejecución Depurar el código Las ventanas de variables DataTip Utilizar la ventana Inmediato Los puntos de interrupción Controlar la ejecución del programa La ventana Pila de llamadas Establecer la instrucción siguiente Ver los datos Comentar el código Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 3. Los tipos de C# Los tipos Los tipos predefinidos de C# Otros tipos que se suelen utilizar en C# Fecha y hora Identificadores únicos globales (GUID) Identificadores de recursos uniformes (URI) Números enteros grandes y números complejos Trabajar con operadores Operadores aritméticos y de asignación Operadores relacionales Operadores lógicos Operador condicional Valores predeterminados Los tipos nulos y anulables Emisión y conversión Empaquetar y desempaquetar las conversiones Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 4. Las clases y los objetos de C# Programación orientada a objetos Encapsulación y abstracción Programación orientada a componentes Las clases en C# Ámbito y espacio de la declaración Accesibilidad Campos y constantes Propiedades Métodos Sobrecargar métodos Parámetros opcionales y argumentos Iniciar una clase Construcción estática Clases anidadas Clases parciales Clases estáticas Métodos de ampliación Iniciadores de objetos Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 5. Herencias, interfaces y clases abstractas Herencia y polimorfismo Trabajar con miembros heredados Miembros y clases abstractas Trabajar con interfaces Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 6. Crear tipos enumerados y estructuras Tipos enumerados Enumeraciones etiquetadas Trabajar con estructuras Definir los métodos de una estructura Sobrecarga del operador Operadores de conversión Construcción e iniciación Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 7. Los eventos y su gestión Los eventos Suscribir y quitar una suscripción Publicar un evento Iniciar un evento Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades Parte II. Programar en C# 8. Controlar el flujo del programa Comprender las declaraciones de selección La declaración if La declaración switch Declaraciones de repetición La declaración while La declaración do La declaración for La declaración foreach Las declaraciones de salto La declaración break La declaración continue La declaración return Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 9. Cadenas y expresiones regulares Cadenas Cadenas vacías Manipulación de cadenas Trabajar con subcadenas Comparación de cadenas Modificar partes de la cadena Concatenar, unir y dividir cadenas Crear cadenas modificables con StringBuilder Formato de tipo Cadenas de formato estándar Cadenas de formato personalizadas Formato compuesto Expresiones regulares Las clases de expresiones regulares en C# La clase Regex Las clases Match y MatchCollection Las clases Group y Capture Utilizar expresiones regulares para validar cadenas Utilizar expresiones regulares para buscar coincidencias en subcadenas Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 10. Trabajar con arrays y con colecciones Arrays sencillos y multidimensionales Indexar un array Iniciación de un array La clase System.Array Indexadores Colecciones genéricas Listas Colecciones Diccionarios Conjuntos Pilas y colas Iniciadores de una colección Interfaces de colección Objetos innumerables y repetidores Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 11. Utilizar excepciones para gestionar errores Comprender las excepciones System.Exception Utilizar excepciones estándar Lanzar excepciones Gestionar las excepciones Volver a lanzar las excepciones que se hayan detectado Trabajar con excepciones Trabajar con la aritmética de números enteros y el desbordamiento aritmético Trabajar con las excepciones, el contrato del código y la validación de parámetros Condiciones previas, condiciones posteriores e invariantes Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 12. La programación genérica Por qué debemos utilizar la programación genérica Parámetros de tipo genérico Restricciones Valores predeterminados para los tipos genéricos Utilizar métodos genéricos Crear clases genéricas Combinar genéricos y arrays La varianza en interfaces genéricas Ampliar las interfaces variantes genéricas Trabajar con tuples Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 13. Expresiones para consultas LINQ Manipular datos con LINQ Seleccionar datos Filtrar datos Agrupar y ordenar datos Unir datos Simplificar datos Métodos del operador para consultas Funciones lambda Expresiones lambda Declaraciones lambda Delegados predefinidos Ejecución diferida Resumen Preguntas y respuestas Ejercicios Preguntas Resultados Actividades Parte III. Trabajar con datos 14. Trabajar con archivos y streams Archivos y directorios Trabajar con rutas Interactuar con los directorios especiales de Windows Las clases DirectoryInfo y FileInfo Las clases Directory y File Leer y escribir datos Archivos binarios Streams guardados en buffer Archivos de texto Leer y escribir datos utilizando la clase File Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 15. Trabajar con XML El modelo DOM de XML Utilizar LINQ to XML XDocument XElement y XAttribute XName y XNamespace Seleccionar y realizar consultas XML Modificar XML Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 16. Trabajar con bases de datos Requisitos previos Comprender ADO.NET Utilizar LINQ to ADO.NET Trabajar con LINQ to DataSet Trabajar con LINQ to SQL Definir una clase DataContext personalizada Trabajar con LINQ to Entities Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades Parte IV. Construir una aplicación con Visual Studio 17. Construir una aplicación para Windows Comprender WPF Trabajar con las etiquetas y su código subyacente Presentación de XAML El código subyacente Aplicaciones Comprender el diseño WPF Utilizar gráficos, animaciones y multimedia Textos, tipografías y documentos Asociación de datos Crear una aplicación WPF Crear el diseño Aplicar estilos al diseño Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 18. Vinculación y validación de datos Vincular datos Crear una vinculación Convertir datos Validar datos Trabajar con plantillas de datos Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 19. Construir aplicaciones para la Tienda Windows Windows Runtime Qué es una aplicación de la Tienda Windows Trabajar de forma asíncrona Construir una aplicación Crear el diseño Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 20. Construir una aplicación Web Comprender la arquitectura de una aplicación Web Trabajar con ASP.NET Crear una aplicación Web Crear el diseño Aplicar estilos al diseño Comprender la vinculación de datos Comprender la validación de datos Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades Parte V. Aún más lejos 21. Programar con atributos Comprender los atributos Utilizar los atributos Caller Info Trabajar con atributos comunes El atributo Obsolete El atributo Conditional Los atributos globales Utilizar atributos personalizados Acceder a los atributos durante la ejecución del código Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 22. Tipos dinámicos y la interoperatividad del lenguaje Utilizar tipos dinámicos Conversiones Solucionar de la carga dinámica Comprender DLR Interoperatividad con COM Interoperatividad de reflexión Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 23. La organización de la memoria y el recolector de basuras Organización de la memoria El recolector de basura La interfaz IDisposable La declaración using Utilizar el patrón de eliminación Declarar y utilizar finalizadores Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades 24. Los hilos de ejecución, la concurrencia y el paralelismo Trabajar y gestionar los hilos de ejecución La concurrencia y la sincronización Trabajar con bloqueos Utilizar señales Operaciones intercaladas Otras primitivas de sincronización Mutex Bloqueos de lectura-escritura Semáforo La librería TPL Paralelismo de datos Colecciones seguras Paralelismo de tareas Esperar a que se completen las tareas Gestionar excepciones Trabajar con Parallel LINQ (PLINQ) Problemas posibles Resumen Preguntas y respuestas Ejercicios Preguntas Respuestas Actividades Índice alfabético