首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将枚举设置为null

如何将枚举设置为null
EN

Stack Overflow用户
提问于 2010-12-03 00:20:35
回答 6查看 286.1K关注 0票数 215

我有一个枚举

代码语言:javascript
复制
string name;

public enum Color
{
  Red,
  Green,
  Yellow
}

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

代码语言:javascript
复制
name = "";
Color color = null; //error

编辑:我的错,我没有正确地解释它。但是所有与nullable相关的答案都是完美的。我的情况是,如果我在一个类中为枚举设置了get/set和其他元素,比如name,等等。在页面加载时,我初始化了这个类,并尝试将值默认为null。以下是场景(代码用C#编写):

代码语言:javascript
复制
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方法中:

代码语言:javascript
复制
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; }
    }

}

感谢所有这些可爱的建议。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-12-03 00:23:54

您可以使用"?“运算符,用于可空类型。

代码语言:javascript
复制
public Color? myColor = null;

或者对不能为空的枚举使用标准实践,将枚举中的第一个值(也称为0)作为默认值。例如在颜色为None的情况下。

代码语言:javascript
复制
public Color myColor = Color.None;
票数 415
EN

Stack Overflow用户

发布于 2010-12-03 00:24:28

如果这是C#,它就不能工作:枚举是值类型,不能是null

正常的选项是添加一个None成员:

代码语言:javascript
复制
public enum Color
{
  None,
  Red,
  Green,
  Yellow
}

Color color = Color.None;

使用Nullable的...or

代码语言:javascript
复制
Color? color = null;
票数 49
EN

Stack Overflow用户

发布于 2010-12-03 00:23:17

使您的变量可为nullable。像这样:

代码语言:javascript
复制
Color? color = null;

代码语言:javascript
复制
Nullable<Color> color = null;
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4337193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档