如何在枚举中添加和使用空值?

时间:2016-08-17 12:52:09

标签: c# .net enums

见下面的枚举包含两个成员:测试和制作

public enum OTA_HotelInvCountNotifRQTarget
{      
    Test,      
    Production,
}

我正在寻找在上面的​​枚举中添加和使用Null值的方法,例如:

inv.Target = OTA_HotelInvCountNotifRQTarget.Null; // Not allowed

更新 我不想在上面的枚举中添加额外的NULL,我想让它变得动态,因为上面的枚举是自动生成的。并且应保持不变。

有没有办法在方法本身中实现这一点,即不在枚举中创建任何Class或添加额外的Enum值? 喜欢:inv.Target = OTA_HotelInvCountNotifRQTarget.Null;

我该怎么做?

4 个答案:

答案 0 :(得分:3)

enum的下划线值为int,无法分配给null

如果您仍想这样做:

  1. Null添加为枚举选项:

    public enum OTA_HotelInvCountNotifRQTarget
    {
        Null,
        Test,
        Production
    }
    
  2. 让你的目标成为Nullable类型:

    Nullable<OTA_HotelInvCountNotifRQTarget> t = null;
    
    //Or in a cleaner way:
    OTA_HotelInvCountNotifRQTarget? t = null;
    
    //And in your class:
    public class YourType
    {
        public OTA_HotelInvCountNotifRQTarget? Target { get; set; }
    }
    

答案 1 :(得分:0)

public enum OTA_HotelInvCountNotifRQTarget
{    
    Null,  
    Test,      
    Production
}

也在这里回答 How to set enum to null

答案 2 :(得分:0)

Enumenum。它值类型,你可以使用 Nullable<OTA_HotelInvCountNotifRQTarget>OTA_HotelInvCountNotifRQTarget?表示“未设置声明”

但如果您仍希望用户nullenum值,请尝试

public enum OTA_HotelInvCountNotifRQTarget
{
    Null,
    Test,
    Production
}

答案 3 :(得分:0)

或使用“?”变量的运算符:

public OTA_HotelInvCountNotifRQTarget? Target;

您必须将作业更改为:

inv.Target = null;