Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
C# 8.0 representa la séptima gran actualización del lenguaje de programación insignia de Microsoft, posicionando a C# como un lenguaje con una flexibilidad y amplitud inusuales. Por un lado, ofrece abstracciones de alto nivel, como expresiones de consulta y continuaciones asíncronas, mientras que, por otro, permite una eficiencia de bajo nivel mediante construcciones como tipos de valores personalizados y punteros opcionales.
El precio de este crecimiento es que hay más que nunca que aprender. Aunque herramientas como IntelliSense de Microsoft -y las referencias en línea- son excelentes para ayudarte en el trabajo, presuponen la existencia de un mapa de conocimientos conceptuales. Este libro proporciona exactamente ese mapa de conocimientos en un estilo conciso y unificado, sin desorden ni largas introducciones.
Al igual que las cinco ediciones anteriores, C# 8.0 en una cáscara de nuez está organizado en torno a conceptos y casos de uso, lo que lo hace amigable tanto para la lectura secuencial como para la navegación aleatoria. Además, profundiza significativamente en los conceptos asumiendo sólo unos conocimientos básicos, lo que lo hace accesible tanto a lectores intermedios como avanzados.
Este libro abarca C#, el Common Language Runtime (CLR) y los ensamblados esenciales de .NET Core. Hemos elegido este enfoque para dejar espacio a temas difíciles como la concurrencia, la seguridad y el acceso a la funcionalidad del sistema operativo, sin comprometer la profundidad ni la legibilidad. Las características nuevas de C# 8 están marcadas para que también puedas utilizar este libro como referencia para C# 7.
Público al que va dirigido
Este libro está dirigido a un público de nivel intermedio a avanzado. No se requieren conocimientos previos de C#, pero sí cierta experiencia general en programación. Para el principiante, este libro complementa, más que sustituye, una introducción a la programación de tipo tutorial.
Este libro es un compañero ideal para cualquiera de la amplia gama de libros que se centran en una tecnología aplicada, como ASP.NET Core, Windows Presentation Foundation (WPF) y Universal Windows Platform (UWP). Las áreas del lenguaje y de .NET Core que dichos libros omiten, C# 8.0 en una cáscara de nuez las cubre en detalle, y viceversa.
Si buscas un libro que repase todas las tecnologías .NET, éste no es para ti. Este libro tampoco es adecuado si quieres aprender sobre las API específicas para el desarrollo de dispositivos móviles.
Cómo está organizado este libro
Los capítulos 2 a 4 se centran exclusivamente en C#, empezando por los conceptos básicos de sintaxis, tipos y variables, y terminando con temas avanzados como el código inseguro y las directivas del preprocesador. Si eres nuevo en el lenguaje, deberías leer estos capítulos secuencialmente.
Los capítulos restantes cubren elementos esenciales de .NET Core, incluidos temas como la consulta integrada en lenguaje (LINQ), XML, colecciones, concurrencia, E/S y redes, gestión de memoria, reflexión, programación dinámica, atributos, seguridad e interoperabilidad nativa. Puedes leer la mayoría de estos capítulos al azar, excepto los capítulos 5 y 6, que sientan las bases de los temas posteriores. También es mejor que leas los tres capítulos sobre LINQ en secuencia, y algunos capítulos presuponen cierto conocimiento de la concurrencia, que cubrimos en el Capítulo 14.
Qué necesitas para utilizar este libro
Los ejemplos de este libro requieren .NET Core 3. También te resultará útil la documentación .NET de Microsoft para buscar tipos y miembros individuales (disponible en línea).
Aunque es posible escribir el código fuente en el Bloc de Notas y construir tu programa desde la línea de comandos, serás mucho más productivo con un bloc de código para probar instantáneamente fragmentos de código, además de un Entorno de Desarrollo Integrado (IDE) para producir ejecutables y bibliotecas.
Para un bloc de código de Windows, descarga LINQPad 6 de www.linqpad.net (gratis). LINQPad es totalmente compatible con C# 8.0 y lo mantiene uno de sus autores.
Para un IDE de Windows, descarga Visual Studio 2019: cualquier edición es adecuada para lo que se enseña en este libro. Para un IDE multiplataforma, descarga Visual Studio Code.
Nota
Todos los listados de código de todos los capítulos están disponibles como muestras interactivas (editables) de LINQPad. Puedes descargar todo el lote con un solo clic: en la parte inferior izquierda, haz clic en la pestaña Muestras de LINQPad, haz clic en "Descargar más muestras" y, a continuación, elige "C# 8.0 en una cáscara de nuez".
.NET Core está disponible para Windows, Linux y macOS. Algunas funciones multiplataforma se probaron en Ubuntu Linux 18.04. El código está disponible en GitHub.
Convenciones utilizadas en este libro
El libro utiliza la notación UML básica para ilustrar las relaciones entre tipos, como se muestra en la Figura P-1. Un rectángulo inclinado significa una clase abstracta; un círculo, una interfaz. Una línea con un triángulo hueco denota herencia, con el triángulo apuntando al tipo base. Una línea con una flecha indica una asociación unidireccional; una línea sin flecha indica una asociación bidireccional.
En este libro se utilizan las siguientes convenciones tipográficas:
- Cursiva
- Indica nuevos términos, URI, nombres de archivo y directorios
Constant width
- Indica el código C#, las palabras clave y los identificadores, y la salida del programa
Constant width bold
- Muestra una sección de código resaltada
Constant width italic
- Muestra el texto que debe sustituirse por valores proporcionados por el usuario
Nota
Este elemento significa una nota general.
Utilizar ejemplos de código
Este libro está aquí para ayudarte a hacer tu trabajo. En general, puedes utilizar el código de este libro en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y citando código de ejemplo no requiere permiso (aunque agradecemos la atribución). Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.
Si crees que el uso que haces de los ejemplos de código queda fuera del uso justo o del permiso aquí concedido, no dudes en ponerte en contacto con nosotros en permissions@oreilly.com.
Aprendizaje en línea O'Reilly
Nota
Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.
Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.
Nos gustaría saber de ti
Dirige tus comentarios y preguntas sobre este libro a la editorial:
O'Reilly Media, Inc.
1005 Gravenstein Highway Norte
Sebastopol, CA 95472800-998-9938 (en Estados Unidos o Canadá)
707-829-0515 (internacional o local)
707-829-0104 (fax)
Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en
Los listados de códigos y recursos adicionales están disponibles en:
Para comentar o hacer preguntas técnicas sobre este libro, envía un correo electrónico a:
Para más información sobre nuestros libros, conferencias, Centros de Recursos y la Red O'Reilly, visita nuestro sitio web en:
Agradecimientos
Joseph Albahari
En primer lugar, quiero dar las gracias a Eric Johannsen por su ayuda en esta edición, sobre todo por su trabajo para que el libro fuera compatible con Unix. También quiero dar las gracias a mi hermano, Ben Albahari, por sus contribuciones en ediciones anteriores.
Ha sido un honor contar con magníficos revisores técnicos en el equipo. Me gustaría dar las gracias especialmente a Vitek Karas y Stephen Toub, de Microsoft, por sus valiosos comentarios en un momento de mucho trabajo. También mi agradecimiento a Paulo Morgado, Aaron Robinson, Jan Vorlicek y Sam Gentile por sus contribuciones.
El libro se basó en ediciones anteriores, a cuyos revisores técnicos debo un honor similar: en las dos últimas ediciones, Rod Stephens, Jared Parsons, Stephen Toub, Matthew Groves, Dixin Yan, Lee Coward, Bonnie DeWitt, Wonseok Chae, Lori Lalonde y James Montemagno. Y en ediciones anteriores, Eric Lippert, Jon Skeet, Stephen Toub, Nicholas Paldino, Chris Burrows, Shawn Farkas, Brian Grunkemeyer, Maoni Stephens, David DeWinter, Mike Barnett, Melitta Andersen, Mitch Wheat, Brian Peek, Krzysztof Cwalina, Matt Warren, Joel Pobar, Glyn Griffiths, Ion Vasilian, Brad Abrams y Adam Nathan.
Aprecio que muchos de los revisores técnicos sean personas consumadas en Microsoft, y les agradezco especialmente que hayan dedicado su tiempo a elevar este libro al siguiente listón de calidad.
Quiero dar las gracias al equipo de O'Reilly, en especial a mi eficiente y receptivo editor Corbin Collins. Por último, mi más profundo agradecimiento a mi maravillosa esposa, Li Albahari, cuya presencia me mantuvo feliz durante todo el proyecto.
Eric Johannsen
Es extraordinario cómo Internet permite colaborar con algunas de las personas más inteligentes del mundo desde los confines de mi despacho.
Doy las gracias a Joseph Albahari por invitarme a colaborar en este increíble proyecto.
Los empleados de Microsoft y los miembros de la comunidad que colaboran en .NET Core en GitHub son tremendamente receptivos y serviciales. Si no encontraba una solución a una pregunta complicada ya documentada allí, mis propias preguntas recibían respuesta en poco tiempo. Gracias por vuestro apoyo.
No habría podido aceptar la oferta de Joseph sin el cariñoso apoyo de mi familia. Doy las gracias a mi mujer, Rose, por haberme ayudado durante este tiempo tan ajetreado, y a mis hijos trillizos, Sydney, Alexis y Ryan, por su comprensión.
Get C# 8.0 en pocas palabras now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.