Curso de C#

Domina C#, el lenguaje multiplataforma de Microsoft
Material disponible
Intermedio
56 Clases 9 h
Con este Curso de C# aprenderás los fundamentos de uno de los lenguajes más usados a nivel mundial. C# es un lenguaje consolidado, orientado a objetos y con un altísimo grado de innovación. Capaz de casi cualquier cosa.

Con C# puedes crear aplicaciones para una gran variedad de plataformas. Desde aplicaciones web a aplicaciones de escritorio para Windows usando .NET. Pero ahora, gracias a .Net Core, es también indicado para el desarrollo de aplicaciones que se ejecutan en Linux, Mac y Windows. 

Con C# puedes hacer también aplicaciones nativas móviles, para iOS y Android, usando Xamarin y, por si fuera poco, también puedes usarlo para desarrollar videojuegos usando el famoso motor Unity 3D.

Qué aprenderé en el Curso de C#

En este Curso de C# aprenderás los fundamentos del lenguaje, su filosofía y cómo realizar las operaciones necesarias con él. Todo lo que se vea en este curso te servirá, indistintamente si al final usas .NET, Net Core, Xamarin, Unity 3D o cualquier otra plataforma en la que C# está disponible.

El curso lo podrán realizar tanto usuarios de Windows como de Linux o Mac, ya las prácticas se realizarán con .NET Core como plataforma de ejecución (.Net Core está disponible en cualquier sistema operativo).

Después de repasar los conceptos de orientación a objetos, para que nadie se pierda, nos adentraremos en las características propias del lenguaje, para terminar viendo como realizar acciones comunes en cualquier plataforma, como leer ficheros, acceder a red o realizar programación asíncrona!

Objetivos del curso

  • Introducción a C# y .NET
    • Características de C# y .NET
    • Hello World y estructuras básicas
    • OOP con C# (clases e interfaces)
  • Sistema de tipos de C#
    • La clase Object
    • Tipos por valor vs tipos por referencia
    • Objetos anónimos
    • Inferencia de tipos
    • Tipado estático vs tipado dinámico
    • Structural Typing en C#
  • Genéricos
    • Clases e interfaces genéricas
    • Varianza en genéricos
  • Delegados
    • Delegados y eventos
    • Métodos anónimos
    • Delegados genéricos
    • Expresiones Lambda
  • Métodos de extensión
  • LINQ
  • E/S
    • Lectura y escritura de ficheros
    • Uso de ficheros XML
    • Uso de ficheros Json
    • Uso de HTTP
  • Asincronía
    • Threads
    • Tasks y TPL
    • AsyncAwait
  • Características avanzadas de C#
    • Tuplas
    • Pattern Matching

Todos los ejemplos de este curso serán realizados usando "aplicaciones de consola" (linea de comandos).

Qué tengo que saber

El curso de C# se podrá realizar por usuarios de cualquier sistema operativo, ya que todas las herramientas necesarias para seguir el curso son multiplataforma:

  • Editor de código Visual Studio Code: https://code.visualstudio.com/
  • Para ejecutar los ejemplos se usará el SDK de netcore, disponible tanto para Mac, Windows y Linux: https://www.microsoft.com/net/download/

Para el acceso a este curso no es necesario tener conocimientos previos en .NET o C#. Sin embargo sí es necesario saber programar. El estudiante debe ser capaz de realizar las operaciones básicas con código, como condicionales, bucles, etc. aunque es indiferente el lenguaje de programación que haya podido conocer en el pasado.

Aunque se repasarán los conceptos de orientación a objetos, sería recomendable disponer al menos de un conocimiento mínimo sobre este paradigma de la programación, de modo que le resulte más sencillo el aprendizaje a lo largo del curso. En este sentido puedes consultar el Curso de Programación Orientada a Objetos de EscuelaIT.

Clases y contenidos

Primeros pasos con C# y .NET


El lenguaje C# y sus plataformas de ejecución Gratis

Fundamentos de C#, introducción a las plataformas de ejecución y aplicaciones que podemos desarrollar.

Descarga de .NET Core y creación de un proyecto C#

En este vídeo veremos todo lo que necesitamos para comenzar a usar C#, a fin de seguir este curso. Veremos los primeros pasos con el editor Visual Studio Code y cómo comenzar un proyecto de C#.

Hola Mundo, ejecución y depuración del código

Ahora vamos a hacer nuestra primer programa. Como C# es orientado a objeto, todo debe de comenzar con una clase y su método main. Veremos cómo ejecutar el código de nuestro primer programa y cómo depurar usando el debugger de Visual Studio Code.

Este es un Hola Mundo en C# ejecutado en la plataforma .NET Core. Es un Hola Mundo bastante completo, pues explicaremos también cómo ejecutar y depurar el programa que se va a realizar, usando el debugger incorporado en Visual Studio Code.

Variables, tipos, ámbito y visibilidad Gratis

Cómo son las variables en C#, un lenguaje de tipado estático. Así que conocemos también un resumen de los tipos que podemos usar en el lenguaje. Vemos acerca del ámbito de las variables y su visibilidad en el código.

Clase básica para empezar a programar con C#. Veremos qué son las variables, cómo es el tipado estático, algunos de sus tipos disponibles con sus particularidades y finalmente qué es el ámbito de las variables y cómo se define su visibilidad en C#.

Clases, métodos y variables privadas Gratis

En este vídeo ahondamos en los primeros pasos con C# y en conceptos de programación orientada a objetos que aplican en este lenguaje. Veremos qué son clases, creando un segundo ejemplo, crearemos métodos y aprenderemos a declarar y usar variables privadas (que no son lo mismo que propiedades en C#). Qué son clases, cómo definirlas en C#. Qué son métodos, cómo implementarlos dentro de las clases. Veremos qué son las variables privadas dentro de las clases, que es algo más propio de .NET y C# (parecen propiedades pero no lo son exactamente)

Propiedades en C#, getters setters Gratis

En este vídeo se explica el concepto de propiedad, que es similar al de otros lenguajes orientados a objeto, pero que tiene particularidades muy específicas de C# y debemos de conocer. Explicamos como realizar los get y set y los mecanismos de las propiedades autoimplementadas.

Constructores en C# Gratis
  • Constructores, cómo crear constructores para tus clases.
  • Sobrecarga y cómo implementarla en los constructores.
  • Parámetros por defecto de los métodos y cómo usarlos, en lugar de la sobrecarga.
  • Cómo llamar de unos constructores a otros constructores sobrecargados, para apoyarnos en el trabajo que ya está implementado en constructores existentes.
Clase Object, clase raíz de clases y tipos de C# Gratis
  • Explicamos la clase Object de C#, que es una clase de la cual heredan todas las otras clases que podamos generar en nuestro código.
  • Vemos que incluso los tipos primitivos en C# tienen como clase padre a la clase Object.
  • Vemos todos los métodos que existen en la clase Object y que por tanto están disponibles en todos los objetos de C#, incluso en los tipos primitivos.
Programa del resto del curso y preguntas finales Gratis

En este vídeo se explica el programa planificado para el resto del curso de C# y resolución de dudas.

Programando con C#

Creación de un menú de consola, entrada / salida
  • En este vídeo comenzamos un proyecto práctico que se irá realizando a medida que vayamos conociendo más cosas de C#.
  • En este primer paso se explica cómo será este proyecto y se construye su primera parte, un menú de entrada de opciones, por consola.
Arrays de objetos
  • Cómo declarar arrays de objetos, algo básico y necesario en nuestro proyecto, ya que tendremos diversas figuras en cada dibujo y cada figura será un objeto.
  • Cómo declarar propiedades con arrays en clases de C#.
Propiedades de solo lectura vs getters y setters privados

Aprendemos a crear propiedades de solo lectura. Veremos que ésto no es lo mismo que tener getters y setters privados, que es algo que el lenguaje también permite.

Herencia de clases y clases abstractas

En este vídeo creamos nuestra primera clase de un dibujo genérico, de la que heredarán los distintos tipos de dibujos que se pueden hacer en la aplicación.
Por qué es necesario tener clases bases y cómo hacer clases abstractas cuando hay métodos que no somos capaces de implementar en cierto nivel de la jerarquía de clases.

Recorridos, bucles, sobre arrays de objetos

Aunque pueda parecer una tarea muy trivial, los recorridos a arrays de objetos son importantes de ver, pues difieren de lo que posiblemente estamos acostumbrados en otros lenguajes, sobre todo en los de tipado dinámico. Cómo optimizar el código del bucle, con azúcar sintáctico, para no tratar los elementos del array que están a null.

Operador ternario y operador de doble interrogación

Vemos cómo es el operador ternario, que existe en muchos lenguajes de programación, junto con algunos consejos de utilización. Además conocemos el operador de doble interrogación, propio de C#, que nos puede resumir todavía más ciertas sentencias de código.

Bucle foreach

Ejemplo sobre cómo sustituir un bucle for tradicional por un bucle foreach, ganando claridad y síntesis en el código.

Inferencia de tipos

El compilador de C# es capaz de realizar inferencia de tipos, es decir, deducir el tipo de variables en función de aquello que se le asigne. Esto nos ayuda a tener un código más sencillo de leer y quitarnos trabajo de encima como programadores.

Paso por referencia y paso por valor

En este vídeo conocemos dos conceptos fundamentales en los lenguajes de programación, como el paso por referencia y el paso por valor. Es importante prestarle atención porque hay algunas cosas específicas de C# en la utilización de estos mecanismos del lenguaje.

Estructuras, struct, de C#

Qué son las estructuras, definiciones struct, en C#. En qué difieren de las clases. Cómo optimizan el rendimiento de las aplicaciones complejas en C#.

Lista de objetos Object

Aprendemos a crear una lista de objetos genérica, que nos evite tener que lidiar con las dimensiones marcadas de casillas de arrays y donde podamos albergar cualquier tipo de datos. Es por ello que se declara la lista con casillas de tipo Object.

Tipos de casting que podemos hacer en C#

Tipos de casting que podemos hacer en C#, un casting tradicional y un casting inteligente. Es importante en este punto, dado que los objetos incorporados en nuestra lista de Object se tienen que castear, para que podamos usarlos de nuevo como el tipo de datos original que tenían. Esto nos lleva a la necesidad de usar genéricos, que será materia de estudio para la siguiente clase. Además se resuelven preguntas finales de la clase.

Cómo utilizar nuevas características y herramientas en C#

Interfaces en C#

Vemos un repaso de las clases anteriores y en especial al tema de las interfaces, que habíamos visto muy por encima. Usaremos mucho las interfaces a partir de ahora, por lo que es importante repasarlas bien.

Utilización de Visual Studio para .NET CORE

En este vídeo vemos cómo se puede usar Visual Studio, edición 2017 en adelante, para el desarrollo con C# en .NET Core.

Por qué los genéricos son esenciales

Explicaciones sobre cómo se llega a genéricos en C# y la importancia de esta herramienta del lenguaje.

Implementar una clase con generics

Implementar una clase genérica, visto paso a paso.

Aplicar generics cuando partimos de un código base

Una alternativa de implementación de generics en C# que será útil y necesaria cuando partamos de un código base que queramos extender a través de tipos genéricos.

Jerarquías de tipos y generics en C#

Vemos cómo se comportan los tipos al usar generics.

Interfaces genéricas

Cómo podemos aplicar generics en el caso de las interfaces.

Interfaz IEnumerable

Una interfaz muy útil en C#, IEnumerable, que nos permite hacer clases que se pueden iterar. Cómo realizar una implementación básica de IEnumerable.

Implementar Enumerator con yield

Solución específica para implementación de la interfaz IEnumerable El código de implementación de IEnumerable anterior era un poco complejo, así que nos aprovechamos de una característica del lenguaje para mejorar lo presente gracias a yield.

Varianza de genéricos

Qué es la varianza de genéricos, explicaciones y detalles de implementación. Con este vídeo finaliza la presente sesión.

Delegados
 en C#

Introducción a delegados en C#
  • Delegados en C#.
  • Caso de uso de delegados.
Implementar y pasar un delegado

Realizamos la implementación de un delegado. Pasamos un delegado con un método de la misma clase, que es la manera más sencilla de pasar un delegado.

Definición de delegados con expresiones lambda

Crearemos delegados mediante métodos anónimos, con una sintaxis que hoy ya no se usa mucho, pero que nos llevará a entender mejor las ventajas y usos de las expresiones lambda para la definición de delegados.

Delegados multiuso Func y Action

Aprendemos el uso de delegados multiuso que nos ofrece el framework y que nos evitan tener que declararlos nosotros mismos en nuestro código.

Métodos de extensión

Qué son los métodos de extensión. Cómo podemos extender clases del framework. Cómo podemos extender nuestro propio código con métodos de extensión.

Dudas sobre métodos de extensión

Se formulan y responden dudas que tienen que ver con los métodos de extensión.

Linq

Conocemos Linq, una colección de métodos de extensión muy potente sobre IEnumerable.

Ampliación LINQ y serialización de datos a JSON

Métodos indizadores

Qué son los métodos indizadores, cómo implementarlos en C#.

Patrón factoría

Cómo mejorar ciertas partes de creación de objetos, eliminando complejidad que dejamos a cargo de una factoría.

Uso clase static vs patrón singleton

Dos alternativas para usar nuestra factoría, contrastadas e implementadas. Explicamos por qué es mejor el patrón singleton.

Restricciones a genéricos en C#

Qué son las restricciones a genéricos y un caso de uso en el que podemos usarlas.

Aplicar otros métodos de LINQ

Ejemplo de aplicación de otros métodos disponibles en LINQ

Serializar usando JSON.NET

Instalamos la dependencia JSON.NET, que no depende de Microsoft y el framework ,NET CORE. Por lo tanto tenemos que agregarlo como dependencia. Implementamos una serialización a JSON simple.

Tipos anónimos en C#

Qué son los tipos anónimos, que nos permiten crear objetos anónimos con cualquier conjunto arbitrario de datos. Los usamos para mejorar y hacer más compleja la serialización a JSON.

Guardado en disco con C#

En este vídeo vemos cómo realizar una escritura en disco de un objeto JSON serializado, que contiene datos de aplicación.

Tipado dinámico en C#

Vemos cómo declarar variables con tipado dinámico en C#, algo que permite el lenguaje si llega a ser necesario.

Características asíncronas de C# y creación de APIs REST

Tuplas en C#

Creación de tuplas y desestructuración de tuplas.

Pattern Matching

Una nueva característica del lenguaje que nos permite aplicar en las estructuras switch.

Programación asíncrona en C#

Comenzamos con un bloque dedicado a las operaciones asíncronas dentro de C#.

Control de tareas asíncronas
  • Seguimos avanzando con varias operaciones básicas que querremos realizar en el tratamiento de operaciones asíncronas.
  • Problema de la pirámide de callbacks.
Async await

Como trabajar con async / await, una herramienta del lenguaje que nos permite el desarrollo de código asíncrono lo más parecido a como se escribiría el código con su versión síncrona.

Proyecto de API REST en C#

Comenzamos el proyecto de un API REST con C#. Creamos las primeras respuestas a rutas a las que se accede mediante el método GET.

Otras operaciones del API REST

Cómo se implementan otros métodos de acceso al API REST, en concreto veremos cómo recibir datos por POST.

Consumir un API REST con HttpClient

En este vídeo realizamos un pequeño ejemplo sobre cómo consumir un API REST, usando los métodos de HttpClient, proporcionado por el framework ,NET CORE.

Sintaxis de las funciones lambda sobre métodos y propiedades

Funciones Lambda para resumir el código de métodos simples y de getters de propiedades

Valoraciones

Javier Arenales

Curso para un nivel intermedio sobre C#, bien explicado y con abundantes ejemplos. El profesor tiene un gran conocimiento sobre la materia y explica bien el contenido.

Víctor Cara Rodríguez

El curso está bastante bien. La persona que lo imparte se nota que domina el lenguaje.

Manuel Bermejo

Lorenzo

Muy bueno

Ana Santamaría Aparicio

Martin Cabello

Excelente curso. Me gusta mucho el nivel y las explicaciones.

Veiko Deniss Quiroz Vásquez

Samuel Maillo Cabrerizo

Jonatan Terrazas Ayala

Christian Barrios Fragozo

Lorenzo Eizmendi

Muy bueno

Jose Joaquin Meseguer Jimenez

Excelente curso de C#

Ingrid Carolina Peláez

Muy buen nivel del profesor, y los detalles del curso. 100% recomendado

Xavier Lamiel

Ana

rafael torrado

muy bueno

Cesar Abraham Saavedra Drouet

Luis Fernández Liesa

Jaime Cabrera Flores

Alvaro Landa Hidalgo

Está bastante bien, aunque me hubiera gustado que estuviera mas estructuradas las lecciones. Además algunos conceptos va demasiado rápido o muy por encima

Monica Fernández

Ejemplos interesantes y bien explicados por el profesor.

Luis Javier Gutiérrez Llamazares

Curso muy interesante para tener un vistazo general de todas las posibilidades que nos ofrece el lenguaje C# con ejemplo prácticos sencillos. Echo muy en falta documentación escrita de la teoría que se trata en los videos del curso.

Blas López

Explciaciones claras con ejemplos sencillos pero completos

Pilar Guzman

Martín Caliba

Muy bueno, completo y bien explicado cada tema.

Valeria Occhiuzzi

bueno

Adrián Rodríguez

Me gusta mucho el contenido y la estructura del curso

Daniel Martínez Priego

Muy bueno curso para tener una idea general de C#, sus estructuras y técnicas específicas.

Daniel Bustillo Cancelas

jv10

Buena introducción al lenguaje, aunque se ha quedado algo desfasado en cuanto al ejemplo del API REST

Luis Gabiña

Muy bueno para tener una visión completa del lenguaje o asentar conocimientos

¿Conoces nuestra tarifa plana?

Toda la formación de EscuelaIT, con más de 200 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.

Suscríbete