Evolución y Mejoras de C# para Optimizar tu Código
Clase 10 de 14 • Curso de Buenas Prácticas y Código Limpio en C#
Contenido del curso
Clase 10 de 14 • Curso de Buenas Prácticas y Código Limpio en C#
Contenido del curso
Luis Sandoval
Nicolas Rios
Caleb Ismael François
Andrés Esteban Rodríguez Jiménez
José Ángel Soriano Soriano
Joel Angel David Barrantes Palacios
José manuel Sanchez Juarez
Jonathan Bernal
JHON JAIRO GONZALEZ TORRENEGRA
Miguel Teheran
Luis Sandoval
Miguel Teheran
Alexander Jair Rojas Paria
Juan Pablo Ruiz
Yunier Albrecht Delgado
Boris Vargas Paucara
De las caracteristicas a lo largo de c#, la de las tuplas me parece muy genial, se me hace muy similar a Go en ese aspecto para retornar multiples valores.
Mi aporte son mis notas echas en Notion: https://wakeful-baryonyx-ef2.notion.site/Evoluci-n-de-C-e1dc82b048994561a2b80a8d7b620109
muy buen aporte, gracias
"Evolution of C#
C# 6
Auto Property Initializer
public string MyVar { get; set; } = "Hello world";
String Interpolation
string MyString = "Hello world"; Console.WriteLine($"The message is: {MyString}");
Expression-bodied Function
=>), akin to JavaScript arrow functions.public int Sum(int x, int y) => (x + y);
Null Conditional Operator
DateTime? datetime = new DateTime();
// Using "?" to check if the value is null var YearOfDate = datetime?.Year;
Console.WriteLine(YearOfDate);
var YearOfDateConditional = datetime?.Year ?? 0;
C# 7
Local Functions
static void Main(string[] args) { int Sum(int x, int y) { return x + y; }
Console.WriteLine(Sum(10, 20)); Console.ReadKey(); }
Digit Separator
public const long BillionsAndBillions = 100_000_000_000;
Tuples
var named (first: "one", second: "two");
// Method returning a tuple (bool bresult, double dcalculation) = Tuples.CalculationTuple();
C# 8
Switch Expression
// Switch as expression int intValueForSwitch = 0;
var state = (intValueForSwitch) switch { (0) => "Zero", (1) => "One", (2) => "Two", (3) => "Three", _ => "NO valid number" }
C# 9
Top-Level Statements
Before:
using System;
namespace HelloWorld { internal class Program { static void Main(string[] args) { Console.WriteLine("Hello world"); } } }
After:
using System;
Console.WriteLine("Hello world");
C# 10
Global Using
Before:
using System;
Console.WriteLine("Hello world");
After:
Console.WriteLine("Hello world");
These improvements represent significant advancements in C# over time, enhancing developer productivity and code readability."
mi aporte todos los ejemplos que mostro el profesor en codigo:
int menuSelected = 0;
do
{
menuSelected = ShowMainMenu();
if ((Menu)menuSelected == Menu.mnInterp)
{
stringinterpol();
}
if ((Menu)menuSelected == Menu.mnbfunct)
{
Console.WriteLine(sumwithbodied(14,28));
Console.ReadKey();
}
if ((Menu)menuSelected == Menu.mncondoper)
{
condoper();
}
if ((Menu)menuSelected == Menu.mnsumlocal)
{
Console.WriteLine($"La Suma es: " + Sumlocalfunctions(154,28));
}
if ((Menu)menuSelected == Menu.mndigsep)
{
const long BillonsAndBillon =100_000_000_000;
Console.WriteLine(BillonsAndBillon);
}
if ((Menu)menuSelected == Menu.mntuples)
{
var named = Tuple.Create(48, "Jose Angel", "Soriano");
DisplayTuple(named);
}
if ((Menu)menuSelected == Menu.mnswitch) { var gitem = 6; var res = gitem switch { 2 => "Hello", 4 => "Bonjour", 6 => "Namaste", 8 => "Anyoung haseyo", _ => "No greeting found", }; Console.WriteLine(res); Console.WriteLine("-------------------"); } } while ((Menu)menuSelected != Menu.Exit);
int ShowMainMenu() { Console.WriteLine("----------------------------------------"); Console.WriteLine("Enter improvements C# on time: "); Console.WriteLine("1. C# 6 String Interpolation "); Console.WriteLine("2. C# 6 Expression Bodied Function"); Console.WriteLine("3. C# 6 Null Conditional Operator"); Console.WriteLine("4. Local Functions"); Console.WriteLine("5. C# 7 Digital Separator"); Console.WriteLine("6. C# 7 Tuples"); Console.WriteLine("7. C# 8 Switch Expression"); Console.WriteLine("8. Salir"); // Read line string menuSelected = Console.ReadLine(); return Convert.ToInt32(menuSelected); }
void stringinterpol() { string myVar = "JOse Angel Soriano"; Console.WriteLine($"The message is: {myVar} "); } int sumwithbodied(int x, int y) => (x+y); static void condoper() { try { DateTime? datetime = new DateTime(); //using ? asking if the value is null var YearofDate = datetime?.Year; Console.WriteLine(YearofDate); var YearofDateConditional = datetime?.Year ?? 0; } catch(Exception) { Console.WriteLine("Ha ocurrido un error al eliminar el Menu 1a"); } } int Sumlocalfunctions(int x, int y) { return x + y ; } static void DisplayTuple(Tuple<int,string,string> named) { Console.WriteLine($"Edad = { named.Item1}"); Console.WriteLine($"First Name = { named.Item2}"); Console.WriteLine($"Last Name = { named.Item3}"); } public enum Menu { mnInterp = 1, mnbfunct = 2, mncondoper = 3, mnsumlocal = 4, mndigsep = 5, mntuples = 6, mnswitch = 7, Exit = 8 }
tambien existen notebooks de c# como lo son en python y funciona solo con .net
creo que es uno de los lenguajes de programación mas dinámicos y que esta tenido muy buenas mejoras
Les paso la liga donde esta la historia de c# con su .net core correspondiente
Clase: Usando Try Catch
Cuando se intenta controlar de manera manual si el índice fuera fijo(que es lo que regularmente pasa) no pasará la validación y entraría en la excepción puesto que si tengo 5 tareas y elimino la 3 por ejemplo ya me quedan 4 y si luego quiero eliminar la 5, ahí se activará el catch puesto que la colección ya solo tiene 4 elementos y no encontrará el 5.
es correcto?
Esa es a idea, existen muchos escenarios donde no es posible pero lo mejr es validar todos los posibles casos donde el coódigo pueda falla y entender el porque y luego igual agregar el try catch para cualquier caso que no podamos controlar.
Tengo una consulta, que tan recomendable es a un proyecto de .NET cambiarle la versión de lenguaje con <LangVersion> en el archivo de la solución, por ejemplo para un proyecto en .NET Framework cambiarle la versión para usar c# 10
En los proyectos de .NET Framework si toca hacerlo así y lo recomendable es usar una versión atras. en .NET Core cada version de C# esta asociada a una version de C# Mas info para ver las correlaciones de las versiones: https://en.wikipedia.org/wiki/C_Sharp_(programming_language)
Esta clase estaba muy buena :3
Actualmente es C#12 y en Beta ya .NET 9 que incluye C#13
Evoluciones del codigo en C#
Grandes aportes.