C#enum-是否为空?
我在用户控件中有以下代码:C#enum-是否为空?,c#,user-controls,enums,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:MyContr
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" ...... />
示例1。
例2。
如果我没有为
SubCategory
指定任何值,那么MyControl
的代码隐藏中的SubCategory值是多少?它是null
还是应用了默认值?我注意到,对于int
属性,它默认为零。它将为0,因为您的enum
默认基于Int32
字段初始化为default(T)
。记住某种类型的默认值的简单方法是,它对应于明显实现中的二进制零
对于枚举,这意味着基础整数类型设置为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,但可以是一个字节或短。@Henk-这就是我说“默认”的原因。是的,你是对的。我认为编译器可以自由选择枚举中定义的第一个值’-假设没有分配显式值,即,
enum Foo{Bar=1,None=0}
Yes,这就是为什么我说“默认情况下”。@CodeInChaos如果我给所有枚举成员分配了非零整数怎么办?那么它仍然会变为0。这是一个未命名的值。枚举可以包含基础整数类型的所有值,甚至是那些没有名称的值。关于enum
s的解释很好,但没有回答这个问题!