【问题标题】:How to add and use null value in Enum?如何在 Enum 中添加和使用空值?
【发布时间】:2016-12-24 03:27:16
【问题描述】:

参见下面的枚举包含两个成员:测试和生产

public enum OTA_HotelInvCountNotifRQTarget
{      
    Test,      
    Production,
}

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

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

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

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

我该怎么做?

【问题讨论】:

  • Enum 被序列化并显示为数字(默认为int)。您可以使用不存在的值作为无效条目的标志,例如inv.Target = (MyEnum)-1;.

标签: c# .net enums


【解决方案1】:

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; }
    }
    

【讨论】:

  • 选项二看起来不错,我怎样才能用它代替行:inv.Target = OTA_HotelInvCountNotifRQTarget.Null;
  • @RSH - 请解释一下。没看懂
  • OTA_HotelInvCountNotifRQTarget? t = null; 使用此代码给我的错误是 OTA_HotelInvCountNotifRQTargettype 但用作变量。
  • 我将代码替换为:inv.Target = OTA_HotelInvCountNotifRQTarget? t = null;
  • 非常感谢@Gilad Green :)
【解决方案2】:

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

public OTA_HotelInvCountNotifRQTarget? Target;

您必须将分配更改为:

inv.Target = null;

【讨论】:

    【解决方案3】:

    Enumenum。它值类型,您可以使用 Nullable&lt;OTA_HotelInvCountNotifRQTarget&gt;OTA_HotelInvCountNotifRQTarget? 代表“未设置语句”

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

    public enum OTA_HotelInvCountNotifRQTarget
    {
        Null,
        Test,
        Production
    }
    

    【讨论】:

      【解决方案4】:
      public enum OTA_HotelInvCountNotifRQTarget
      {    
          Null,  
          Test,      
          Production
      }
      

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

      【讨论】:

      • 关闭,但您可能希望 Null 成为第一个条目,因此它是默认值。
      • 我想从代码中执行此操作,这意味着我从哪里使用这些枚举。我不想在其中添加额外的值,即Null
      • 那我建议你去谷歌,stackoverflow.com/questions/4337193/how-to-set-enum-to-null,这是make enum nullable的第一个谷歌结果
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      相关资源
      最近更新 更多