Hans González
Carlos Gomez
Leoneider Trigos Guerrero
Victor Apolinares
Santiago Montero
Alexis Duque
Gaston Rodrigo Farru
Miguel Teheran
ProfesorGaston Rodrigo Farru
Andres Madrid
Christian Guzmán
Jaime Eduardo Falla Cardozo
Alejandra Suárez
Miguel Angel Reyes Moreno
Emilio Nicolás Mendoza Patti
Miguel Andres Rendon Reyes
Manuel Rincon
ROMMEL DUAREZ SAENZ
Fan de C# , pero tambien puedo tener amigos como vuejs, react !
x2 jajaja 👌
Se puede mejorar la legibilidad renombrando 'p' por task.
Eso mismo hice! jasj
Cada vez c# es mas sencillo de utilizarlo, que estupendo!
Que buena clase, había vuelto a ver los fundamentos de C# porque había notado cosas como estas que antes no estaban
Alguien sabe si existen diferencia de validaciones o de performance al usar el Any() y no el Count().-
La diferencia es muy poca, pero Any hace que sea mas elegante y que se entienda de inmediato el próposito del código Mas info sobre el performance acá: https://code-maze.com/any-vs-count-dotnet/
Es excelente el articulo. Gracias por la info.-
Me encanta C#, cada vez es mas y mas sencillo usarlo, sin dejar de ser robusto.
Estaría buenísimo combinar este curso con TDD para automatizar las pruebas de código.
Hay otro patrón que retorno temprano, y es si no se cumple la validación del dato, hacer el return en vez de hacer el else
En el momento en que hago este curso, C# se siente muy similar a Typescript de alguna forma.
Código actualizado:
using System; using System.Collections.Generic; namespace ToDo { internal class Program { public static List<string> TaskList { get; set; } = new List<string>(); static void Main(string[] args) { int menuOption = 0; do { menuOption = ShowMainMenu(); if ((Menu)menuOption == Menu.Add) { AddTask(); } else if ((Menu)menuOption == Menu.Remove) { RemoveTask(); } else if ((Menu)menuOption == Menu.List) { ShowTaskList(); } } while ((Menu)menuOption != Menu.Exit); } /// <summary> /// Show the main menu /// </summary> /// <returns>Returns menuOption indicated by user</returns> public static int ShowMainMenu() { Console.WriteLine("----------------------------------------"); Console.WriteLine("Ingrese la opción a realizar: "); Console.WriteLine("1. Nueva tarea"); Console.WriteLine("2. Remover tarea"); Console.WriteLine("3. Tareas pendientes"); Console.WriteLine("4. Salir"); // Read taskIndex string taskIndex = Console.ReadLine(); return Convert.ToInt32(taskIndex); } public static void RemoveTask() { try { Console.WriteLine("Ingrese el número de la tarea a remover: "); // Show current taks ListTasks(); string taskIndex = Console.ReadLine(); // Remove one position int indexToRemove = Convert.ToInt32(taskIndex) - 1; if (indexToRemove <= TaskList.Count - 1 && indexToRemove >= 0) { if ((indexToRemove > -1) || (TaskList.Count > 0)) { string taskToRemove = TaskList[indexToRemove]; TaskList.RemoveAt(indexToRemove); Console.WriteLine($"Tarea {taskToRemove} eliminada"); } } else { Console.WriteLine("El número de tarea seleccionado no es válido."); } } catch (Exception) { Console.WriteLine("Ha ocurrido un error al eliminar la tarea."); } } public static void AddTask() { try { Console.WriteLine("Ingrese el nombre de la tarea: "); string taskToAdd = Console.ReadLine(); if (!string.IsNullOrEmpty(taskToAdd)) { TaskList.Add(taskToAdd); Console.WriteLine("Tarea registrada"); } else { Console.WriteLine("La tarea no puede estar vacía."); } } catch (Exception) { Console.WriteLine("Ha ocurrido un error al intentar ingresar la tarea."); } } public static void ShowTaskList() { if (TaskList?.Count > 0) { ListTasks(); } else { Console.WriteLine("No hay tareas por realizar"); } } public static void ListTasks() { Console.WriteLine("----------------------------------------"); var indexTask = 1; TaskList.ForEach(task => Console.WriteLine($"{indexTask++}. {task}")); Console.WriteLine("----------------------------------------"); } } public enum Menu { Add = 1, Remove = 2, List = 3, Exit = 4 } }
Interpolacion de cadenas
public static void ShowTaskList(){ var indexTask = 1; TaskList.ForEach( task => Console.WriteLine($"{indexTask++}. {task}")); Console.WriteLine("----------------------------------------"); }
Totalmente de acuerdo, buena observación.
Buen día reto realizado.
me parece que: if (TaskList?) está preguntando "si no es null" y de ser V entra al if....en vez de preguntar "si es null"