none
crear un enum al iniciar clase RRS feed

  • Pregunta

  • Hola a todos, quiero crear o poblar un enuciado al crear la clase, pero no sé cómo hacerlo...

    Namespace holamundo{

     Public class holamundo{

      public Enum Sección{private set; get;}

      xelement Configuracion;

     Public holamundo(string fichero){

       Configuracion = new xelement(fichero);

       Seccion=cargarSeccion();

    }

    Enum cargarSeccion(){

     Var resul = from e in Configuracion.element()

    Select e.attribute("seccion").value;

     Return result.toarray();

    }

    }

    }

    Se que no es lo correcto pero es una idea de lo que quiero

    jueves, 12 de noviembre de 2020 17:12

Respuestas

  • Hola Raúl

    Por mi experiencia (que funciona en mis programas) las ENUMERACIONES (no enunciados) se declaran dentro de un namespace pero fuera de las clases, y definen valores que reemplazan a simples números. 

    Por ejemplo (un enum de uno de mis juegos):

    enum MarioStates { SmallMario, SuperMario, MarioFire, MarioRaccoon }; // fue acortado por ser más práctico

    Los valores del enum serían lo mismo que 0, 1, 2, 3, pero el chiste del enum es mejorar la legibilidad del código, por ejemplo, si quiero averiguar si Mario está en estado grande, es más prolijo esto:

    if (mario.State == MarioStates.SuperMario)

        hacerAlgo(); // Mario está en estado grande

    que:

    if (mario.State == 1)

        hacerAlgo;

    Lo segundo es lo que Metaconta llamaría "código chapuza" y lo primero es más profesional.

    En resumen, las enum sirven para elegir una de varias opciones y codificarlo de forma que sea prolijo y bien legible por el programador.

    Saludos

    Pablo

    • Marcado como respuesta cl2raul66 sábado, 14 de noviembre de 2020 17:11
    jueves, 12 de noviembre de 2020 18:34

Todas las respuestas

  • Hola Raúl

    Por mi experiencia (que funciona en mis programas) las ENUMERACIONES (no enunciados) se declaran dentro de un namespace pero fuera de las clases, y definen valores que reemplazan a simples números. 

    Por ejemplo (un enum de uno de mis juegos):

    enum MarioStates { SmallMario, SuperMario, MarioFire, MarioRaccoon }; // fue acortado por ser más práctico

    Los valores del enum serían lo mismo que 0, 1, 2, 3, pero el chiste del enum es mejorar la legibilidad del código, por ejemplo, si quiero averiguar si Mario está en estado grande, es más prolijo esto:

    if (mario.State == MarioStates.SuperMario)

        hacerAlgo(); // Mario está en estado grande

    que:

    if (mario.State == 1)

        hacerAlgo;

    Lo segundo es lo que Metaconta llamaría "código chapuza" y lo primero es más profesional.

    En resumen, las enum sirven para elegir una de varias opciones y codificarlo de forma que sea prolijo y bien legible por el programador.

    Saludos

    Pablo

    • Marcado como respuesta cl2raul66 sábado, 14 de noviembre de 2020 17:11
    jueves, 12 de noviembre de 2020 18:34
  • Ok tienes razón, es que aveces hay utilidades en c# que piensas que se puede usar en todos lados.
    jueves, 12 de noviembre de 2020 19:02
  • Por mi experiencia (que funciona en mis programas) las ENUMERACIONES [...] se declaran dentro de un namespace pero fuera de las clases

    No, eso da igual. También puedes declarar un enum dentro de una clase si te viene bien (por ejemplo, si es privado y solo se va a usar dentro de esa clase y no en ningún otro sitio). Si lo haces público, desde fuera se ve como NombreDeLaClase.NombreDelEnum. Es perfectamente lícito y no ocasiona ningún problema.

    En el caso de la pregunta original veo un problema distinto, y es que está usando el enum sin declararlo con un nombre:

    public Enum Sección{private set; get;}

    o

    Enum cargarSeccion(){...}

    No funcionan así, primero hay que declarar el tipo de enum, y luego se usa el nombre que se le ha puesto, en lugar de usar la palabra Enum:

    public enum MisValores { lista de valores }

    y luego

    public MisValores Sección{private set; get;}

    o

    MisValores cargarSeccion(){...}

    jueves, 12 de noviembre de 2020 19:50
    Moderador
  • Hola cl2raul66, 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

    Espero su respuesta.  

    Gracias por usar los foros de MSDN.  

    Andres Aguilar 

    ____________________________  

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN sientase en la libertad de contactar  MSDNFSF@microsoft.com. 

    viernes, 13 de noviembre de 2020 17:00
    Moderador