enum(C# 参考)

 

       enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。但是,还可以将枚举嵌套在类或结构中。.Net C#中枚举的声明格式如下所示:

                [attributes] [modifiers] enum identifier [:base-type] {enumerator-list} [;]

        默认情况下,第一个枚举数的值为 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 的常量

 

        每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。准许使用的枚举类型有 byte、sbyte、short、ushort、int、uint、long 或 ulong,枚举元素的默认基础类型为 int 。若要声明另一整型枚举,例如 byte,请在标识符之后紧跟冒号,然后说明类型:

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

 

        基础类型指定为每个枚举数分配的存储大小。但是,从 enum 类型到整型的转换需要用显式类型转换来完成。例如,下面的语句使用强制转换(从 enum 转换为 int)将枚举数 Sun 赋值给一个 int 类型的变量:
        int x = (int)Days.Sun;

        两个枚举数被显式转换为整数并赋给整型变量。

public class EnumTest
{
enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };
static void Main()
{
int x = (int)Days.Sun;
int y = (int)Days.Fri;
Console.WriteLine("Sun = {0}", x);
Console.WriteLine("Fri = {0}", y);
}
}
/* Output:
Sun = 0
Fri = 5
*/

 

        在此例中,使用了基类选项来声明成员类型是 long 的 enum。请注意,即使枚举的基础类型是 long,也仍然必须使用强制转换将枚举成员显式转换为 long 类型。

public class EnumTest2
{
    enum Range : long { Max = 2147483648L, Min = 255L };
    static void Main()
    {
        long x = (long)Range.Max;
        long y = (long)Range.Min;
        Console.WriteLine("Max = {0}", x);
        Console.WriteLine("Min = {0}", y);
    }
}
/* Output:
   Max = 2147483648
   Min = 255
*/

 

        FlagsAttribute属性就是枚举类型的一项可选属性。它的主要作用是可以将枚举作为位域处理(P.S. C#不支持位域)。所谓位域是单个存储单元内相邻二进制位的集合。通过为枚举添加这个属性,可以改变枚举的一些行为来满足我们的需要。将 System..::.FlagsAttribute 应用于某个枚举时,如果该枚举包含一些使用按位 OR 运算组合的元素,这时您会注意到该属性在用于某些工具时会影响 enum 的行为。当使用诸如 Console 类方法、表达式计算器这样的工具时,可以注意到这些变化:

[Flags]
public enum CarOptions
{
SunRoof = 0x01,
Spoiler = 0x02,
FogLights = 0x04,
TintedWindows = 0x08,
}
class FlagTest
{
static void Main()
{
CarOptions options = CarOptions.SunRoof | CarOptions.FogLights;
Console.WriteLine(options);
Console.WriteLine((int)options);
}
}
/* Output:
SunRoof, FogLights
5
*/

 注释 请注意,如果移除 FlagsAttribute,此示例的输出为:

5

5

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中,populate是一个常用的术语,用于指代填充或初始化数据的过程。在给定的上下文中,根据提供的引用内容,我认为你可能在询问如何在C#中填充或初始化一些数据。 根据引用中的代码示例,可以使用泛型方法EnumNamedValues<T>()来填充将枚举类型的所有有效值映射到其字符串表示形式的字典。该方法使用System.Enum作为基类约束,以确保类型安全性。通过使用Enum.GetValues和Enum.GetName方法,它遍历枚举类型的所有值,并将它们添加到字典中。 另外,根据引用中的代码示例,在使用DevExpress中的ChartControl实现极坐标图时,可能需要填充数据来显示在图表中。具体的实现思路可以参考提供的代码。 总结起来,populate在C#中可以指代填充或初始化数据的过程,可以根据具体的上下文和需求使用不同的方法和技术来实现数据填充。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C# 泛型](https://blog.csdn.net/LiKe11807/article/details/120892392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [在C#中使用DevExpress中的ChartControl实现极坐标图](https://blog.csdn.net/zlbdmm/article/details/122982729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值