No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Interpolaci贸n de cadenas, inicializador de propiedades y operador condicional null

11/14
Recursos

Aportes 12

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Fan de C# , pero tambien puedo tener amigos como vuejs, react !

Se puede mejorar la legibilidad renombrando 鈥榩鈥 por task.

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

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.

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("----------------------------------------");
        }

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"
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.