我有一个类,它的属性是枚举
枚举是
/// <summary>
/// All available delivery actions
/// </summary>
public enum EnumDeliveryAction
{
/// <summary>
/// Tasks with email delivery action will be emailed
/// </summary>
Email,
/// <summary>
/// Tasks with SharePoint delivery action
/// </summary>
SharePoint
}
当我创建这个类的实例时,在代码中的任何地方,我是否指定了枚举字段的值,但它似乎缺省为枚举列表中的第一项,而不是空值,这是枚举的工作方式吗?如果没有设置,如何确保枚举获得某种类型的空值,我不希望它缺省为枚举中的第一个值。
发布于 2009-07-22 13:52:30
枚举是一种值类型,就像整数一样。您需要将其设置为可空,这样才不会缺省为第一个(或定义为0)枚举成员。
public class MyClass
{
public EnumDeliveryAction? DeliveryAction { get; set;}
}
发布于 2009-07-22 13:56:06
最佳实践(如代码分析所建议的)是在枚举中始终具有默认值,该值表示未设置的值。
因此,在您的情况下,您可能有:
public enum EnumDeliveryAction
{
/// <summary>
/// Default value
/// </summary>
NotSet,
/// <summary>
/// Tasks with email delivery action will be emailed
/// </summary>
Email,
/// <summary>
/// Tasks with SharePoint delivery action
/// </summary>
SharePoint
}
另外,您不应该在枚举的名称前加上Enum前缀。您可以考虑更改为:
public enum DeliveryAction;
发布于 2009-07-22 13:55:51
您可以从任何值(例如1)开始枚举,但是当它们表示Database中的查找值时,您通常希望它们匹配。
根据.Net框架设计指南,当有意义时,我通常会将第一个枚举声明为None (= 0)。
https://stackoverflow.com/questions/1165402
复制相似问题