Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#enum-是否为空?_C#_User Controls_Enums - Fatal编程技术网

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的解释很好,但没有回答这个问题!