c# enum -是否为空?

本文关键字:是否 enum | 更新日期: 2023-09-27 18:10:36

我在用户控件中有以下代码:

public partial class MyControl : System.Web.UI.UserControl
{    
    public Enums.InformationSubCategory SubCategory { get; set; }
    ...omitted code
}

Enums.InformationSubCategory是我在其他地方定义的enum,我可以这样做:

Example 1. <my:MyControl runat="server" SubCategory="Food" ...... />
Example 2. <my:MyControl runat="server" ...... />

如果我根本没有为SubCategory指定一个值,那么MyControl的代码隐藏中的子类别的值将是什么?它是null还是默认值应用于它?我注意到,与int属性,它默认为零。

c# enum -是否为空?

字段初始化为default(T)。记住某种类型的默认值的简单方法是,在明显的实现中,它对应于二进制零。

对于enum,这意味着底层整数类型被设置为0。默认情况下,这对应于枚举中定义的第一个值。

这就是为什么通常将枚举中的第一个值命名为None

枚举元素的默认底层类型是int。默认情况下,第一个枚举数的值为0,每个后续枚举数的值增加1。例如:

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

在这个枚举中,Sat为0,Sun为1,Mon为2,以此类推。枚举数可以有初始化式来覆盖默认值。

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

在此枚举中,元素序列强制从1开始,而不是从0开始。

它将为0,因为您的enum默认基于Int32