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
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Juan Carlos Ruiz
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 #.
Aportes 99
Preguntas 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
![](
fun fact: una vez una colega mía, estaba buscando reclutar para un puesto temporal alguien con perfil de c#, y publico en linkedin: “estoy buscando una persona que conozca de c gato”… jajaj, me hizo el día, que digo el día, aun lo recuerdo y me sigo riendo…
Versiones
1. Basico
a. Java
2. Java y C#
a. Genercs, Partial types
b. Anonymous methods
c. Iterators
d. Nullable types
e. Getters/setter separate accessibility
f. Method group conversions co and contra variance
g. Static classes
h. Delegate inference
3.
a. Implicitly typed local variables
b. Object and collection initializers
c. Auto-impkemented properties
d. Anonymous types
e. Query expressions
f. Extension methods
g. Lambda expression
h. Expression trees
i. Partial methods
4.
a. Dynamic binding
b. Named and otional argument
c. Generic co and contravarience
d. Embedded interop types "NoPIA"
5.
a. Asynchronous methods
b. Caller info attributes
6. D
a. Compiler-as-a-service
b. Import of static type members into namespace
c. Exception filters
d. Await in catch/finally blocks
e. Auto property intilializers
f. Default values of getter-only properties
g. Expression-bodied members
h. Null propagator
i. String interpolation
j. Nameof operator
k. Dictionary initializer
7. D
a. Out variables
b. Pattern matching
c. Tuples
d. Deconstriction
e. Local functions
f. Digit separators
g. Binary literals
h. Ref returns and locals
i. Generalized azync return types
j. Expression bodied constructors and finalizers
k. Throw as expression
C# se llama asi por C++, incrementado
Este man se ve que la tiene muy clara en su forma de hablar, no como otros profesores que hablan y tienen como que pensar mucho. Juan Carlos habla muy fluido y con mucha seguridad, me ha gustado mucho lo que va de este curso. A seguir aprendiendo
Increíble, Esto no te lo enseñan en la U.
Para mi el lenguaje mas agil y eficiente que he conocido
C# fue creado para el desarrollo de proyectos de gran envergadura, para desarrollos extensos y codificar de manera mas sencilla, es un lenguaje que ha madurado en el tiempo.
Faltaron los años/fechas de cada versión para tener un contexto histórico más claro, pero la explicación esta muy buena.
El carácter de C♯ no es un numeral “#” es un chart “♯”
Creí que esta clase estaba de más. Me equivoqué, me sirvió mucho esta información 😃.
Interesante lo del azucar Sintactico
De verdad ha cambiado muchisimo
En Julio-2022, estoy usando C# v11.0 con .NET 6.0
Yo a veces a C# lo llamo Re bemol jajaja
Muy interesante la evolución del lenguaje.
c hashtag xd
El c HashTag 😄
Genial esta historia. Muy interesante lo de C# (C Sharp). 😄
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#,
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?