No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Implementando minimalismo

12/14
Recursos

Aportes 15

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Si utilizan Visual Studio al darle control + k + d, el IDE formatea el archivo.

Me encanto ese truco de <ImplicitUsings>enable</ImplicitUsings>

Es increíble usando todo lo aprendido pude crear una mini calculadora en pocas líneas de código. `using System;` ` namespace cosola` ` {` ` public class Program` ` {` ` static void Main(string[] args)` ` {` ` string calculadora(int num1, int num2, int operacion)` ` {` ` int sum() => (num1 + num2);` ` int res() => (num1 - num2);` ` int mul() => (num1 * num2);` ` int div() => (num1 / num2);` ` var total = (operacion) switch` ` {` ` ((int)operadores.sum) => (sum()),` ` ((int)operadores.res) => (res()),` ` ((int)operadores.mul) => (mul()),` ` ((int)operadores.div) => (div()),` ` _ => 0` ` };` ` return $"El total es: {total}";` ` }` ` string total = calculadora(1, 3, (int)operadores.res);` ` Console.WriteLine(total);` ` }` ` enum operadores` ` {` ` sum = 1,` ` res = 2,` ` mul = 3,` ` div = 4,` ` }` ` }` ` }`

Hola Comunidad !
A mi me sirvio el shortcut:
Presiona las teclas Ctrl + K seguido de Ctrl + F

En Windosws VCS

Si al eliminar la estructura de namespace y using “referencias en el proyecto” y estan dentro de visual studio code se debe tener instalado la extensión de C# en este.

Lo del XML es esencial para optimizar el codigo y poder trabajar bien las versiones de .NET,

Así queda mi código.


    List<string> TaskList =  new List<string>();

    int menuSelected = 0;
    do
    {
        menuSelected = ShowMainMenu();
        if ((Menu)menuSelected == Menu.Add)
        {
            ShowMenuAdd();
        }
        else if ((Menu)menuSelected == Menu.Remove)
        {
            ShowMenuRemove();
        }
        else if ((Menu)menuSelected == Menu.List)
        {
            ShowMenuTaskList();
        }
    } while ((Menu)menuSelected != Menu.Exit);

    /// <summary>
    /// Show the main menu 
    /// </summary>
    /// <returns>Returns option indicated by user</returns>
    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 line
        string line = Console.ReadLine();
        return Convert.ToInt32(line);
    }

    void ShowMenuRemove()
    {
        try
        {
            Console.WriteLine("Ingrese el número de la tarea a remover: ");
            // Show current taks
            ShowTaskList();

            string line = Console.ReadLine();
            // Remove one position
            int indexToRemove = Convert.ToInt32(line) - 1;

            if ((indexToRemove > TaskList.Count -1) || (indexToRemove > 0))
            {
                Console.WriteLine("Numero de tarea seleccionado no es valido");
            }
            else{
                if ((indexToRemove > -1) && (TaskList.Count > 0))
                {
                    string task = TaskList[indexToRemove];
                    TaskList.RemoveAt(indexToRemove);
                    Console.WriteLine("Tarea " + task + " eliminada");
                }
            }
        }

        catch (Exception ex)
        {
            Console.WriteLine("Ha ocurrido un error al eliminar la tarea");
        }
    }

    void ShowMenuAdd()
    {
        try
        {
            Console.WriteLine("Ingrese el nombre de la tarea: ");
            string task = Console.ReadLine();

            if(string.IsNullOrEmpty(task) == true)
            {
                Console.WriteLine("Las tareas no pueden tener campos vacíos");
            }
            else{
                TaskList.Add(task);
                Console.WriteLine("Tarea registrada");

            }


        }
        catch (Exception ex)
        {
            Console.WriteLine("Ha ocurrido un error al registrar la tarea");
        }
    }

    void ShowMenuTaskList()
    {
        if (TaskList?.Count > 0)
        {
            ShowTaskList();
        } 
        else
        {
            Console.WriteLine("No hay tareas por realizar");
        }
    }

    void ShowTaskList()
    {
        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
    }

Código actualizado:

List<string> TaskList = new List<string>();

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

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

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

void ShowTaskList()
{
    if (TaskList?.Count > 0)
    {
        ListTasks();
    }
    else
    {
        Console.WriteLine("No hay tareas por realizar");
    }
}

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
}

Saludos a todos!
Usando visual Studio Code:

Pueden abrir la lista completa de comandos y atajos presionando Ctrl + K + Ctrl + R (Ctrl + K y sin dejar de presionar Ctrl , presionar R)

Para dar formato se puede usarla combinación:
Shift + Alt + f

Varias de esas "simplificaciones" se sienten como volver al paradigma imperativo. Esa pérdida de estructura solo le vería utilidad cuando se hacen programas muy simples y de finalidad específica, del estilo de un script.
me gusta mucho el uso del top-level statement !!
Comparto las 2 lineas de código del archivo .csproj \<ImplicitUsings>enable\</ImplicitUsings> \<OutputType>Exe\</OutputType>
La directiva `<ImplicitUsings>enabled</ImplicitUsings>` en C# permite habilitar el uso implícito de determinados espacios de nombres (namespaces) y tipos en un archivo de código sin necesidad de importar explícitamente esos espacios de nombres con la palabra clave `using`. Cuando esta directiva está habilitada, algunos espacios de nombres y tipos comunes se incluyen de manera implícita en el ámbito del archivo de código, lo que significa que se pueden utilizar sin la necesidad de agregar una instrucción `using` correspondiente. Esto puede ayudar a reducir la cantidad de código necesario para escribir, especialmente en escenarios donde se utilizan tipos y miembros de espacios de nombres comunes en múltiples partes del código. Por ejemplo, si tienes habilitada la directiva `<ImplicitUsings>enabled</ImplicitUsings>` en un archivo de código, podrías usar tipos de `System` o `System.Collections.Generic` sin necesidad de agregar `using System;` o `using System.Collections.Generic;`.
La real calculadora ```js using System; namespace cosola { public class Program { static void Main(string[] args) { string calculadora(int num1, int num2, int operacion) { int sum() => (num1 + num2); int res() => (num1 - num2); int mul() => (num1 * num2); int div() => (num1 / num2); var total = (operacion) switch { ((int)operadores.sum) => (sum()), ((int)operadores.res) => (res()), ((int)operadores.mul) => (mul()), ((int)operadores.div) => (div()), _ => 0 }; return $"El total es: {total}"; } string total = calculadora(1, 3, (int)operadores.res); Console.WriteLine(total); } enum operadores { sum = 1, res = 2, mul = 3, div = 4, } } } ```using System; namespace cosola { public class Program { static void Main(string\[] args) { string calculadora(int num1, int num2, int operacion) { int sum() => (num1 + num2); int res() => (num1 - num2); int mul() => (num1 \* num2); int div() => (num1 / num2); var total = (operacion) switch { ((int)operadores.sum) => (sum()), ((int)operadores.res) => (res()), ((int)operadores.mul) => (mul()), ((int)operadores.div) => (div()), \_ => 0 }; return $"El total es: {total}"; } string total = calculadora(1, 3, (int)operadores.res); Console.WriteLine(total); } enum operadores { sum = 1, res = 2, mul = 3, div = 4, } } }

Si sale error en las referencias al cambiar la configuración, quitar los using y estás trabajando en visual studio, solo hay que cerrar y volver abrirlo. No sé si les llegue a pasar lo mismo pero en mi caso sucedió eso.