一尘不染

如何将枚举设置为null

c#

我有一个枚举

string name;

public enum Color
{
  Red,
  Green,
  Yellow
}

如何在加载时将其设置为NULL。

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

编辑:我不好,我没有正确解释。但是所有与nullable有关的答案都是完美的。我的情况是,如果我在类中具有其他元素(如名称等)的枚举值,则该怎么做。在页面加载时,我初始化该类并尝试将值默认为null。这是场景(代码在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; //???
        }
    }

}

然后使用下面的建议,我更改了上面的代码以使其与get和set方法一起使用。我只需要添加“?” 在声明私有枚举变量期间在EnumTest类中以及在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; }
    }

}

感谢所有可爱的建议。


阅读 1765

收藏
2020-05-19

共1个答案

一尘不染

您可以使用“?” 可空类型的运算符。

public Color? myColor = null;

或对不能为空的枚举使用标准做法,方法是将枚举中的FIRST值(aka 0)作为默认值。例如,在颜色为无的情况下。

public Color myColor = Color.None;
2020-05-19