[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..)

1
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?

4 meses después
B

.

1 respuesta
r2d2rigo

#72 "nunca digas de este agua no bebere, este cura no es mi padre ni esta polla no me cabe".

Aprovecha para contar que tal tu experiencia.

1 respuesta
B

.

ysnwb

Algún libro que recomendéis

1 respuesta
1 mes después
Nujabes

Buenas, soy una persona con 0 conocimiento de código, no me dedico (ni quiero hacerlo) profesionalmente, pero me llama la atención como hobby por unas herramientas de servidores de X juego.

He mirado cursos de C# y Java, pero no sé por donde empezar, casi todos son del tipo si haces esto pasa esto y siento que estoy copiando y pegando más que aprendiendo, por lo que vengo a pediros consejo, aviso que no tengo prisa en aprenderlo ya que tengo otro trabajo y obligaciones y no dispongo de muchas horas al día, por lo que me enfoco en lo básico y como hobby, pero si quiero notar avances de aquí a 2 años vista.

Recomendaciones?

1 respuesta
Soltrac

#76 cuando termines el copia pega intentar hacer algo tú solo desde 0.

Un objetivo real y luego empezar a escalar la dificultad.

Espectrox

#75 yo te diria que empezaras por el mitico yellow book of c#: http://www.csharpcourse.com/

Hace una aplicacion simple de banca paso a paso y explicando el porque. Es como empece viniendo desde Java.

Despues lo que te comentan, hacer algo desde 0: Una calculadora, un gestor de una tienda facilito sin base de datos...

1
4 comentarios movidos a Feda /dev/ - No Javascript allowed
5 meses después
laZAr0

¿Conocéis alguna librería sencilla que pueda usar para leer de y escribir en excel?

Tengo una carpeta con 3-4k libros de excel, en cada libro hay una hoja con una plantilla que se rellena diariamente con ciertos valores. Me gustaría poder hacer algo que lea los datos de 3 celdas concretas de cada una de esas plantillas y los escriba en filas de única hoja de cálculo en otro archivo.

Me he encontrado el panorama y ahora resulta que por X motivos hay que analizar esos valores en busca de errores y se supone que tengo que extraerlos a mano uno a uno..., y la verdad, no es que me apetezca demasiado. Tengo conocimientos básicos de programación, concretamente con C#, aunque no sé si es la mejor herramienta para hacerlo, pero nunca he intentado algo similar.

¿Alguna idea?

Gracias.

1 respuesta
Traber

#83 https://github.com/JoshClose/CsvHelper

https://joshclose.github.io/CsvHelper/examples/reading/

1 1 respuesta
laZAr0

#84 ¡Gracias!

Estoy leyendo la documentación y creo que antes de nada tendría que convertir la hoja que me interesa del libro .xlsx a .csv. He dicho que los libros tenían una única hoja, pero no, me he columpiado, son 3.

2 respuestas
r2d2rigo

#85 syncfusion tiene la librería XlsIO con alguna licencia Community si mal no creo recordar, échale un ojo.

1 1 respuesta
Traber

#85 Si no es CSV y es XLS/XLSX tendrás que usar NPOI:

https://github.com/dotnetcore/NPOI

2 1 respuesta
laZAr0

#86 #87

Me quedo con NPOI. Me ha parecido fantástico, además tiene un montón de ejemplos en la web. Super sencillo y rápido de implementar lo que quería, incluso con mis conocimientos tan limitados.

Muchas gracias a los dos.

3 meses después
B

Una pregunta: ¿Aprender C# lleva implícito el aprendizaje de .NET?

Quiero decir, aprender Java no te hace saber Spring por lo que no sé si, en este caso, se aprenden a la par el lenguaje y el framework.

1 respuesta
Scottie

#89 si, C# es el lenguaje, y .NET es el conjunto de librerías. Sería complicado, por no decir que no sabría ni como hacer para aprender C# sin .Net.

Aunque no es mi mundo, .NET también lo conforma librerías en otros lenguajes como F# y VB.NET.

1

Usuarios habituales