C#
Introducción al curso
Bienvenidos al curso
Instalación de C#
Mi primer programa C#
Instalación de Visual Studio Code
Configuración IDE
Breve Historia de C#
Versiones de C# / ¿De dónde viene su nombre?
Clases y Objetos
Clases, objetos, métodos, acciones y atributos
Introducción a la Programación Orientada a Objetos
Aprendamos con un proyecto
Proyecto: CorEscuela
Etapa 1 – Creando la escuela
Creación de la estructura básica de la escuela
Uso de numeraciones y el método ToString
Creación de parámetros
Etapa 2 – Creando Cursos para la escuela
Creando otros objetos para nuestra escuela
¿Qué es un arreglo?
Crea un arreglo de objetos
Formas de recorrer arreglos
Inicializando arreglos y mejorando impresión
Condiciones
Operadores en C#
Etapa 3 – Implementado colecciones para el manejo de cursos
Colecciones vs arreglos
Implementando colecciones
Removiendo y buscando objetos en colecciones
Expresiones lambda y delegados
Etapa 4 – Refactorizando y cargando datos de prueba
Refactorizar a escuela engine
Clases estáticas
Creación de entidades
Generación de datos aleatorios
Datos de prueba
El gran RETO
El gran reto
Resolución del reto
Conclusiones del curso
You don't have access to this class
Keep learning! Join and start boosting your career
At the beginning the C# versions were adding basic functionalities or core functionalities, then came versions creating large blocks of functionality and over time the framework matured, then the new versions of C# were looking for new features to write faster and friendlier code.
The 1.0 version of C# was very similar to Java. From version 2.0 they began to implement new ideas such as partial types, anonymous methods, iterators and other things.
For version 7.0 they increased the release speed of a new version, then they started to release C# 7.1, 7.2.
C# was thought as an improvement to the C++ language, this language has its name for being an improvement of the C language, then to call (C++)++ to C# would have been very bad. For that reason it was chosen to call it "C Sharp" that "Sharp" means intelligent, but the symbol of Sharp is not easy to take out with the keyboard for that reason the sign # is used.
Contributions 99
Questions 3
C#
Con razón mi humilde PHP no lo quieren en los bancos :´v
C# Versión 1
Cuando echas la vista atrás, la primera versión de C# sí que se parecía un montón a Java. Como parte de sus objetivos de diseño escritos para ECMA, buscaba ser un “lenguaje orientado a objetos de uso general moderno y sencillo”. En aquel momento, podría haber hecho algo peor que mirar hacia Java para alcanzar dichos fines.
Pero si analizases la versión 1.0 de C# 1.0 hoy, te marearías. Carecía de capacidades asíncronas sólidas y de muchas de las “pulidas” funcionalidades relacionadas con los genéricos que hoy en día damos por sentadas. En realidad, carecía de genéricos en general. ¿Y LINQ? Nada. Eso tardaría aún unos cuantos años en salir.
La versión 1 de C# parecía estar bastante desprovista de funcionalidad, comparado con hoy. Al final te veías escribiendo código pesado. Pero bueno, como con cualquier versión 1.0: por algún lado hay que empezar…
C# Versión 2
Aquí las cosas se empiezan a poner interesantes. Repasemos algunas de las principales características de C# 2.0, lanzado en 2005, junto con Visual Studio 2005 (no te olvides de echarle un vistazo al libro escrito por el creador de NDepend, Patrick Smacchia, sobre .NET 2.0, disponible en inglés y francés).
Genéricos
Tipos parciales
Métodos anónimos
Tipos anulables
Iteradores
Covarianza y contravarianza
Aunque Microsoft puede que haya empezado con un lenguaje orientado a objetos bastante genérico, la versión 2 de C# lo cambió todo enseguida. Se pusieron a la tarea tras la salida de la versión inicial y fueron a por varias de las frustraciones que causaba. Y lo hicieron muy en serio.
Con genéricos, tienes tipos y métodos que pueden operar sobre un tipo arbitrario mientras que aún conservan seguridad de tipos. Así, por ejemplo, tener una List<T> te permite tener una List<string> o una List<int> y realizar operaciones seguras de tipo en esas cadenas de caracteres o ints mientras iteras por ellas. Esto es mucho mejor que crear clases derivadas de listas (ListInt?) o convertir a un Objeto para cada operación.
¡Ah!, y hablando de iteradores, la versión 2 de C# los presentó. Para resumir, esto te permite iterar por los ítems de una Lista (u otros tipos Enumerable) con un bucle foreach. Tener esto como un elemento de primera clase del lenguaje mejoró ostensiblemente la legibilidad del código y la capacidad para poder entenderlo.
Y aún así, Microsoft seguía intentando ponerse a la altura de Java. Java ya había liberado versiones que incluían genéricos e iteradores. Pero eso cambiaría pronto a medida que los lenguajes seguían una evolución diferente.
C# Versión 3
La versión 3 de C# apareció a finales de 2007, junto con Visual Studio 2008, aunque la funcionalidad completa aparecería con la versión 3.5 de C#. ¡Y menuda actualización resultó ser!. Yo me atrevería a afirmar que ese momento consolidó a C# como un lenguaje de programación realmente formidable. Veamos algunas de sus características principales en esta versión:
Propiedades auto-implementadas
Tipos anónimos
Expresiones de consulta - LINQ
Expresiones lambda
Árboles de expresión
Métodos de extensión
Con mirada retrospectiva, muchas de estas características parecen tanto inevitables como inseparables. De hecho, no es fácil destacar una sobre otra ya que todas encajan estratégicamente muy bien juntas.
Otros haciendo este mismo análisis no tendrán ese problema, y dirán que, de largo, la novedad más importante de la versión 3 de C# fue las expresiones de consulta, también conocidas como LINQ (Language INtegrated Query).
Yo creo que hay más matices y sutilezas puesto que, desde mi punto de vista, los árboles de expresión, las expresiones lambda y los tipos anónimos fueron los cimientos sobre los que se creó LINQ. Disertaciones aparte, lo cierto es que nos encontramos con un concepto realmente revolucionario. Microsoft había empezado a allanar el terreno para hacer de C# un lenguaje funcional orientado a objetos híbrido.
En concreto, con esta versión ya se podían programar búsquedas declarativas tipo SQL para llevar a cabo operaciones en colecciones, entre otras cosas. En vez de tener que crear un bucle para computar la media de una lista de enteros, ahora se podía hacer con algo tan fácil como list.Average(). La combinación de expresiones de búsqueda y métodos de extensión hizo parecer que las listas de enteros se habían hecho más inteligentes.
Llevó un tiempo hasta que los programadores realmente entendieron cómo integrar el concepto, pero a la larga lo lograron. Y ahora, unos años más tarde, el código es mucho más conciso, sencillo y funcional.
C# Versión 4
La versión 4 de C# nació con el estigma de no suponer una innovación rompedora como sí lo había sido su antecesora versión 3. Y es que con la versión 3, Microsoft hizo que el lenguaje dejase de estar a la sombra de Java y empezó a destacar. Rápidamente el lenguaje se estaba convirtiendo en una opción elegante.
De todos modos, la versión 4 de C# sí introdujo alguna cosas chulas.
Tipos dinámicos
Argumentos opcionales y con nombre
Covarianza y contravarianza genérica
Tipos interop embebidos
Los tipos interop embebidos aliviaron problemas a la hora del despliegue. La covarianza y contravarianza genéricas te dan mucha potencia, pero son demasiado académicas y probablemente sean más valoradas entre los creadores de frameworks y bibliotecas. Los argumentos opcionales y con nombre te permiten eliminar muchas sobrecargas de método y ofrecen comodidad. Pero ninguna de estas cosas altera el paradigma propiamente dicho.
Esa distinción sí se la llevan los tipo dinámico. Con esta característica, Microsoft introdujo en la versión 4 de C# la capacidad de anular el compilador al tiparlo en tiempo de compilación. Es decir, al usar el tipo de referencia dinámico, te puedes llegar a pegar un tiro en el pie como en los lenguajes de tipado dinámico como JavaScript. Puedes crear una “x = cadena de caracteres” dinámica y luego añadirle 6, dejando al tiempo de ejecución determinar qué diablos tiene que pasar después.
Esto lo digo un poco de broma obviamente. Está claro que cabe la posibilidad de cometer errores, pero también otorga mucha potencia dentro del lenguaje.
C# Versión 5
Con la versión 5 de C#, Microsoft liberó una versión con el foco muy puesto en la innovación del lenguaje. Esta es la lista de las características más importantes:
Programación asincrónica con Async y Await
Atributos Caller info
No quiero que se me malinterprete. El atributo caller info está muy bien. Te permite recuperar información sobre el contexto en el que estás sin tener que recurrir a un montón de código reflejo repetitivo. Me encanta esta funcionalidad en realidad.
Pero async y await son las verdaderas estrellas de esta versión. Cuando esto salió en 2012, Microsoft cambió las reglas del juego nuevamente al meter la asincronía en el lenguaje como un participante de primera clase. Si ya has gestionado operaciones largas y la implementación de páginas web con retro-llamadas, probablemente adores esta funcionalidad.
C# Versión 6
Con las versiones 3 y 5, Microsoft había hecho algunas cosas bastante impresionantes en un lenguaje orientado a objetos (la versión 2 también, pero estaban copiando conceptos de Java con esas funciones que introdujeron). Con la versión 6 se alejaron de la idea de sacar una novedad dominante estrella y, en vez de eso, liberaron muchas características para hacer felices a los usuarios del lenguaje de programación. Aquí enumero unas cuantas:
Importaciones estáticas (como en Java)
Filtros de excepciones
Inicializadores de propiedad
Miembros con una expresión como cuerpo
Propagador null
Cadenas interpoladas
Operador nameof
Inicializador del diccionario
Si las vemos de forma individual, todas estas características del lenguaje son muy interesantes. Pero si las valoramos en conjunto, observamos un patrón que nos llama la atención. En esta versión, Microsoft se ha esforzado en eliminar repeticiones en el lenguaje y hacer que el código sea más ligero y legible. Así que para los aficionados del código escueto y limpio, esta versión del lenguaje fue una gran victoria.
¡Ah!, e hicieron otra cosa con esta versión, aunque no se puede considerar como una función tradicional del lenguaje, per se. Liberaron Roslyn, el compilador, como servicio. Microsoft ahora usa C# para hacer C#, y te dejan usar el compilador como parte de tus esfuerzos de programación.
C# Versión 7
Finalmente hemos llegado ya a la versión 7 de C#. Es la versión actual en la fecha que se ha escrito este artículo. Tiene cosas muy chulas y revolucionarias que ya estaban en el ADN de la versión 6, pero sin el compilador como servicio. Aquí van las novedades de esta versión:
Variables out
Tuplas y deconstrucción
Coincidencia de patrones
Funciones locales
Extensión de la funcionalidad de miembros con una expresión como cuerpo aparecida en C# 6
Referencias locales y devoluciones
Todas ofrecen nuevas capacidades para que los desarrolladores puedan escribir código más limpio que nunca. En concreto, creo que Microsoft ha dado solución a problemas que venían desde muy lejos al condensar la declaración de variables que se pueden a usar con la palabra clave out y al permitir valores de devolución múltiples vía tuplas.
Además, Microsoft le está dando un uso más amplio al lenguaje. .NET ahora va dirigido a cualquier sistema operativo y tiene la vista puesta de forma firme en la nube y en la portabilidad. Esto es lo que más ocupa la mente y el tiempo de los diseñadores del lenguaje, además de pensar en nuevas características.
Conozco C# desde hace 15 años, y el lenguaje ha estado bajo desarrollo más tiempo que eso. Será emocionante ver qué funcionalidades y características deparará el futuro.
HOY EN EL 2021.
C# 9.0
C# 9.0 agrega las siguientes características y mejoras al lenguaje C#:
C# 9.0 es compatible con .NET 5.
C# 8.0
C# 8.0 agrega las siguientes características y mejoras al lenguaje C#:
C# 8.0 se admite en .NET Core 3.x y .NET Standard 2.1
C sostenida
♯ Caracter Unicode U+266F
HTML Entity:
♯
♯
♯
C♯
jaja, no sea torpe, no es C número sino C sharp… 😂 🤣
Por lo poco que hice la prueba en Word funciona.
Alt 9839
. 😄
Pero oficialmente, es C# de C++++ o C# del sotenido de notas musicales de las partituras?
GG Java
muy interesante la evolucion de C# y su nombre.
"C Sharp” que “Sharp “ significa inteligente, pero el símbolo de Sharp no es fácil de sacar con el teclado por ello se usa el signo #.
Insisto Microsoft es muy malo nombrando productos, servicios
Irrelevante
Jaja, yo cuando lo vi por primera vez le decía “C gato”.
De hecho MS ya tiene un lenguaje puramente funcional, es F#, incluso tiene su propio lenguaje para escribir programas que corran en computadores cuánticos, es Q#.
si charp
En Mayo-2022, estoy usando C# v10.0 lanzada en 2021 adentro de .NET 6.0
Aprendiendo a programar en C^3
C número 🤣🤣
Super completo.
Increible clase, geniales datos y aportes.
Me gusta mucho cuando dan el contexto completo.
😎
C# Es un Framework de C 🤥🤥 Lo digo por la descripcion que hay de la clase.
Buen video
Symbol Name: Music Sharp Sign
Hex Code: ♯
Decimal Code: ♯
Unicode Group: Miscellaneous Symbols
sip xd! falto la fecha
Excelente clase para conocer la historia de C#
Wow, que cambio tuvo C#
tremenda la historia!!
Muy bien explicado la historia 😄
estoy comenzando a emocionarme con este lenguaje.
Siempre es bueno saber de la historia de la tecnología que debemos saber.
Hasta ahora es el que mas facil que conosco
buena explicacion!
buenas clases
Muy interesante.
muy buena información!
buena explicación y es interesante lo que significa el nombre c#
Es muy interesante conocer todos los avances del lenguaje y como va evolucionando para hacer mejores códigos.
Excelente recorrido por las versiones de C#
Gracias por la información, siempre es bueno conocer la historia! 😄
¿Por qué se llama C#?
Buena clase
C♯
Pequeña observación: el último punto del RESUMEN debe ser “Por qué se llama C#”
Yo lo llamaba c almohadilla jajajaj
me paso lo mismo, con mi profesor de fp le agarre odio al pobre de c#
Versión C# 4.0
Versión C# 2.0
Versión C# 3.0
Versión C# 5.0
Versión C# 6.0
Versión C# 7.0
Muy interesante. Me llamo mucho la atención el tema del parallels, no se si me puedas brindar mayor información acerca del tema, ya que haciendo uso de ese proceso, no sé de qué manera puedo especificar por que hilo se debe ir cada proceso y en cierto punto el intenta hacer los distintos procesos por un mismo hilo, lo cual es lo que intento evitar.
Versión C# 7.1
Muy buena clase!!
Genial
Interesante
yo son la teclas negras del teclado, recorriendo el teclado de izquieda a derecha
Ohhh que agradable historia el porque se puso el nombre así jaja excelente clase.
excelente clase!!
Me generó unas cuantas risas el profesor explicando, el carisma que tiene se contagia XD Explica todo súper bien
Para los que quieren hacer el ♯ en el teclado = Alt + 154
muy interesante la evolución…
Buena introducción, importante tener conocimiento de porque surgió y la evolución que ha tenido en el tiempo.
En un comienzo las versiones de C# iban agregando funcionalidades básicas o funcionalidades al core, luego llegaron versiones creando grandes bloques de funcionalidad y con el tiempo fue madurando el framework, entonces las nuevas versiones de C# lo que buscaban eran nuevas funcionalidades para escribir más rápido y amigable el código.
La versión 1.0 de C# era muy parecida a Java. A partir de la versión 2.0 empezaron a implementar nuevas ideas como los tipos parciales, métodos anónimos, iteradores entre otras cosas.
Para la versión 7.0 se incremento la velocidad de lanzamiento de una nueva versión, entonces empezaron a sacar C# 7.1, 7.2.
C# se pensó como una mejora al lenguaje C++, este lenguaje tiene su nombre por ser una mejora del lenguaje C, entonces llamar (C++)++ a C# hubiera quedado muy mal. Por ello se optó en llamarlo “C Sharp” que “Sharp “ significa inteligente, pero el símbolo de Sharp no es fácil de sacar con el teclado por ello se usa el signo #.
Alt+154 me salió ☼
Muy interesante el origen del Nombre C#
Estoy en el minuto 8 y ya no recuerdo nada de lo que dijo
interesante
jajajjajajaja un día le dije a mi profe que creí que c++ era lo mismo que c# porque solo era exteneder los palitos del + (poniendolos en diagonal) para que diera un # y mira no estaba tan equivocado xD.
♯
# != ♯
c# ❤️
buena explicacion del origen de C#,
Want to see more contributions, questions and answers from the community?