[c#] Cómo configurar enum a null



1 Answers

Si esto es C #, no funcionará: las enumeraciones son tipos de valores y no pueden ser null .

Las opciones normales son agregar un miembro None :

public enum Color
{
  None,
  Red,
  Green,
  Yellow
}

Color color = Color.None;

... o para usar Nullable :

Color? color = null;
Question

Tengo una enumeración

string name;

public enum Color
{
  Red,
  Green,
  Yellow
}

Cómo establecerlo en NULL en carga.

name = "";
Color color = null; //error

Editado: Mi mal, no lo expliqué correctamente. Pero todas las respuestas relacionadas con los nulos son perfectas. Mi situación es What what, he get / set para la enumeración en una clase con otros elementos como nombre, etc. En la carga de la página, reinicializo la clase y trato de establecer los valores por defecto a null. Aquí está el escenario (el código está en C #):

namespace Testing
{
    public enum ValidColors
    {
        Red,
        Green,
        Yellow
    }

    public class EnumTest
    {
        private string name;
        private ValidColors myColor;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public ValidColors MyColor
        {
            get { return myColor; }
            set { myColor = value; }
        }

    }

    public partial class _Default : System.Web.UI.Page
    {       
        protected void Page_Load(object sender, EventArgs e)
        {
            EnumTest oEnumTest = new EnumTest();
            oEnumTest.Name = "";
            oEnumTest.MyColor = null; //???
        }
    }

}

Luego, usando las sugerencias a continuación, cambié el código anterior para que funcione con los métodos get y set. Solo necesito agregar "?" en la clase EnumTest durante la declaración de la variable enum privada y en el método get / set:

public class EnumTest
{
    private string name;
    private ValidColors? myColor; //added "?" here in declaration and in get/set method

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public ValidColors? MyColor
    {
        get { return myColor; }
        set { myColor = value; }
    }

}

Gracias a todos por las encantadoras sugerencias.




Una enumeración es un tipo de "valor" en C # (significa que la enumeración se almacena como cualquier valor que sea, no como una referencia a un lugar en la memoria donde se almacena el valor en sí). No puede establecer los tipos de valor como nulos (dado que null se usa únicamente para los tipos de referencia).

Dicho esto, puede usar la clase incorporada Nullable<T> que ajusta los tipos de valor de manera que puede establecerlos como nulos, comprobar si tiene HasValue y obtener su Value real. (Esos son ambos métodos en los Nullable<T> .

name = "";
Nullable<Color> color = null; //This will work.

También hay un acceso directo que puede usar:

Color? color = null;

Eso es lo mismo que Nullable<Color> ;




Related