C#enum - 它是null吗?

时间:2011-10-07 11:57:20

标签: c# user-controls enums

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

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指定一个值,那么SubCategory的值在MyControl的代码隐藏中会是什么?它是null还是应用了默认值?我注意到int属性,默认为零。

3 个答案:

答案 0 :(得分:2)

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

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

这就是为什么在枚举None中命名第一个值的常见原因。

答案 1 :(得分:0)

它将为0,因为enum默认情况下基于Int32

答案 2 :(得分:0)

枚举元素的默认基础类型是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开始。

相关问题