[C#] Hilo general

Wei-Yu

#60 por qué? Por tener los registros desperdigados por la codebase?

1 respuesta
JuAn4k4

#61 Porque no tienes control alguno sobre lo que estás desplegando/configurando. Si, es más fácil para un proyecto pequeño, pero eso no escala dignamente y para hacer tests es una locura.

1
Scottie

Me piden pasar un proyecto de Asp.net a Asp.net Core, alguien lo ha hecho? consejos? horas?

Es un proyecto mediano, y tengo que dar estimación... >.<

2 respuestas
wdaoajw

#63 por un lado te va a molar porque netcore >>>>>>>>>> asp.net

En cuanto a las horas... Pues depende de las librerías y lo grande que sea, pero muchas cosas te deberían funcionar tal cual

1
JuAn4k4

#63 Tendrás que contar todo lo que tienes que hacer: Libs, Dependencias, con/sin equivalente netstandard/netcore y apps/configs. (http, etc..)

8 meses después
laZAr0

Hola, estoy empezando a programar y me ha surgido una pequeña duda, a ver si me podéis echar una mano.

Si tengo:


[Flags]
enum Color: byte
        {
            None     = 0b_0000_0000,
            Negro    = 0b_0000_0001,
            Blanco   = 0b_0000_0010,
            Gris     = 0b_0000_0100,
        }

Y después hago:

Color color = Color.Negro | Color.Blanco;

¿Puedo obtener un array que almacene los valores o los nombres de las constantes almacenadas en 'color'?

He probado con Enum.GetValues y Enum.GetNames, pero claro, 'color' no es una enumeración y no he conseguido hacer que funcione.

Quería el array con la idea de usarlo para hacer un filtrado de los tipo Color ya añadidos a color en un método que lee colores por consola y que solicitase al usuario la entrada de un color diferente si ése ya había sido añadido.

Muchas gracias.

1 respuesta
r2d2rigo

#66 si se puede, solo te faltaba usar Enum.Parse:

using System;

namespace ConsoleApp3
{
    class Program
    {

    [Flags]
    enum Color : byte
    {
        None = 0b_0000_0000,
        Negro = 0b_0000_0001,
        Blanco = 0b_0000_0010,
        Gris = 0b_0000_0100,
    }

    static void Main(string[] args)
    {
        Color color = Color.Negro | Color.Blanco;

        Console.Write("Colores en la variable: ");

        foreach (var nombreColor in Enum.GetNames(typeof(Color)))
        {
            var valorColor = Enum.Parse(typeof(Color), nombreColor);

            if (color.HasFlag((Enum)valorColor))
            {
                Console.Write(nombreColor + ", ");
            }
        }

        Console.ReadKey();
    }
}
}
Colores en la variable: None, Negro, Blanco,
2 1 respuesta
laZAr0

#67 Ostras, muchas gracias por responder y tomarte la molestia. No conocía el método HasFlags, muy interesante. Creo que más o menos entiendo lo que has hecho. Con el bucle estás parseando cada nombre del enum Color para luego imprimirlo por consola si coincide con los flags almacenados en color, pero no entiendo exactamente cómo hacer lo que que quería para meter esos nombreColor en un array de cadenas en lugar de imprimirlos en consola.

¿Podría meter un contador dentro del bucle para sumar 1 cada vez que la condición del HasFlags se cumpla y utilizar el contador como índice de un array vacío (que iría redimensionado también cuando se cumpla la condición) en el que añadir ese nombreColor?

Perdona si soy un poco cansino, xD gracias de nuevo.

1 respuesta
r2d2rigo

#68 te explico mas o menos como pueda:

  • Enum.GetNames te devuelve un array con todos los nombres de los valores de un enum; en este caso, estara devolviendo [ "None", "Negro", "Blanco", "Gris"].
  • Con el foreach los recorremos todos unos por uno.
  • Por cada nombre de color, usamos Enum.Parse para, a partir de una string que contenga el nombre de un valor del enum, obtener su valor; para la string "Negro" devolvera Color.Negro, para "Blanco" Color.Blanco, y sucesivamente.

Para lo que quieres hacer, simplemente create un List<string> listaColores fuera del bucle y dentro de la condicion, en vez de hacer el Console.Write haz listaColores.Add(nombreColor).

Te recomiendo que aprendas a perderle el miedo al debugger cuanto antes y aprendas como poner breakpoints e inspeccionar variables, en mi opinion como mas se aprende es examinando codigo ya existente :)

1 1 respuesta
laZAr0

#69 Me ha quedado claro, mucha gracias por la explicación. Voy poquito a poco intentando consolidar conceptos conforme los voy viendo y aún no había llegado a las lista, por eso estaba intentando hacerlo con lo que había visto hasta ahora. Tengo mucho de sintaxis básica aún por aprender. Muy amable por tus comentarios.

1 1 respuesta
Horchatoso

#70 si no es mucha molestia cómo estás estudiándolo ? Y si estas siguiendo algún libro o curso, que opinión tienes hasta ahora y como lo llevas?

Usuarios habituales

  • r2d2rigo
  • JuAn4k4
  • Wei-Yu
  • kidandcat
  • Traber
  • zYctest
  • SupermaN_CK