C# 中的枚举类型 enum (属于值类型)

原文 C# 中的枚举类型 enum (属于值类型)

C# 支持两种特殊的值类型:枚举和结构。
声明枚举:声明时要声明所有可能的值。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;  

    namespace enumType
    {
        enum Season     // enum 类型定义在 class 外面
        {
            Spring, Summer, Fall, Winter    // 最后一个元素后面不加" ; "
        }  

        class Program
        {
            //enum Season     // 枚举变量定义在此处也可以
            //{
            //    Spring, Summer, Fall, Winter
            //}  

            static void Main(string[] args)
            {
                Season beauty = Season.Fall;
                Season coldSeason = Season.Winter;
                Season currentSeason = Season.Summer;  

                Console.WriteLine("The beautiful season is {0}.", beauty);
                // 用 WriteLine 显示枚举变量时,编译器会自动生成代码,输出和变量值匹配的字符串  

                Console.WriteLine("The beautiful season is {0}.", beauty.ToString());
                // 也可以使用 ToString 方法,显式地将一个枚举变量转换成代表其当前值的一个字符串  

                Console.WriteLine("The current season is {0}.", currentSeason);
                Console.WriteLine("{0} is very cold.", coldSeason);
            }
        }
    }

运行后结果如下:

在枚举的内部,它的每个元素都关联(对应)着一个整数值。默认情况下,第一个对应整数 0,以后每个元素所对应的整数都递增 1。我们可以获取一个枚举变量的基础整数值,为此,必须先将它转换为基本类型。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;  

    namespace enumType
    {
        enum Season     // enum 类型定义在 class 外面
        {
            Spring, Summer, Fall, Winter    // 最后一个元素后面不加" ; "
        }  

        class Program
        {
            static void Main(string[] args)
            {
                Season currentSeason = Season.Summer;  

                Console.WriteLine("Summer is {0}", (int)currentSeason); // 枚举的基础整数值
            }
        }
    }

运行后结果如下:

也可以把一个特定的整数常量和一个枚举类型的文字常量关联起来。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;  

    namespace enumType
    {
        enum Season     // 定义为 short 可以节省空间
        {
            Spring = 168, Summer, Fall, Winter    // 最后一个元素后面不加" ; "
        }  

        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Spring is {0}", (int)Season.Spring);     // 168
                Console.WriteLine("Summer is {0}", (int)Season.Summer);     // 169 依次 +1
                Console.WriteLine("Fall is {0}", (int)Season.Fall);         // 170
                Console.WriteLine("Winter is {0}", (int)Season.Winter);     // 171
            }
        }
    }

运行后结果如下:

多个枚举文字常量可能拥有相同的基础值,可以像如下这样声明。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;  

    namespace enumType
    {
        enum Season     // enum 类型定义在 class 外面
        {
            Spring, Summer, Fall, Autumn = Fall, Winter    // 最后一个元素后面不加" ; "
        }  

        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Spring is {0}", (int)Season.Spring);     // 0
                Console.WriteLine("Summer is {0}", (int)Season.Summer);     // 1
                Console.WriteLine("Fall is {0}", (int)Season.Fall);         // 2
                Console.WriteLine("Autumn is {0}", (int)Season.Autumn);     // 2 基础值相同
                Console.WriteLine("Winter is {0}", (int)Season.Winter);     // 3
            }
        }
    }

运行后结果如下:

声明枚举时,枚举的文字常量将默认获得 int 类型的值。但可以选择枚举的基本类型。

时间: 2024-07-31 07:44:11

C# 中的枚举类型 enum (属于值类型)的相关文章

C# 值类型,自定义值类型(struct,enum)

/*C#值类型 ValueType * 1.有两种自定义值类型:结构,枚举: * 2.值类型(value type)和引用类型(reference type):区别源于复制策略的不同,后者又造成每种类型在内存中以不同的方式存储.值类型:直接包含值,换句话说就是引用的位置就是值在内存中 * 实际存储位置,寻址方式就是直接寻址:值类型存储在栈里面,引用类型存储在堆里面,变量名称存储在栈里面:值类型需要一个内存副本: * 值类型传值得方式是复制:引用是共享同一块内存:引用类型的变量关联了两个存储位置:

标量类型与返回值类型声明

PHP 标量类型与返回值类型声明  PHP 7 新特性 标量类型声明 默认情况下,所有的PHP文件都处于弱类型校验模式. PHP 7 增加了标量类型声明的特性,标量类型声明有两种模式: 强制模式 (默认) 严格模式 标量类型声明语法格式: declare(strict_types=1); 代码中通过指定 strict_types的值(1或者0),1表示严格类型校验模式,作用于函数调用和返回语句:0表示弱类型校验模式. 可以使用的类型参数有: int float bool string inter

C# 不用系统自带的方法将字符串类型123456转换为值类型

C# 不用系统自带的方法将字符串类型123456转换为值类型 static void Main(string[] args) { string numString = "123045"; long num = GetNum(numString); Console.WriteLine(num); } private static long[] ten = new long[] { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000 };

Swift中数组和字典都是值类型

在 Swift 中,所有的基本类型:整数(Integer).浮点数(floating-point).布尔值(Boolean).字符串(string).数组(array)和字典(dictionary),都是值类型,并且在底层都是以结构体的形式所实现.类是引用类型. 1.测试数组是否为值类型 var testArray = [String]() testArray.append("AA") testArray.append("BB") testArray.append(

pycahrm使用docstrings来指定变量类型、返回值类型、函数参数类型

py里面不需要显示声明类型,这和java c这些静态语言不同,虽然python这样做少了一些代码和写代码的困难度,但还是非常多的弊端的,运行速度 代码安全, 这些都是语言本身带来的本的弊端,这些没办法没办法弥补(说用c扩展和加入大量if isinstance来判断类型的,这是不好的不方便的).但下面这两种却是可以通过docstrings来弥补的. 1.没有类型就给函数(或者方法)调用者带来麻烦,这个函数怎么用,这个参数代表什么,需要传一个什么样的参数来调用这个函数,函数返回什么东西,这都对代码阅

python限定方法参数类型、返回值类型、变量类型等

typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型. 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒pycharm目前支持typing检查,参数类型错误会黄色提示 常用类型 int,long,float: 整型,长整形,浮点型 bool,str: 布尔型,字符串类型 List, Tuple, Dict,

Java中自定义枚举(Enum)项的值,可设置为指定的值

一.代码 package base.lang; /** * ClassName: StateEnum  * @Description: TODO * @author fuming * @date 2016年11月27日 */ public enum StateEnum{//添加枚举的指定常量online(10),offline(20); //必须增加一个构造函数,变量,得到该变量的值private int  mState=0;private StateEnum(int value){mState

C#中值类型和引用类型

本文将介绍C#类型系统中的值类型和引用类型,以及两者之间的一些区别.同时,还会介绍一下装箱和拆箱操作. 值类型和引用类型 首先,我们看看在C#中哪些类型是值类型,哪些类型是引用类型. 值类型: 基础数据类型(string类型除外):包括整型.浮点型.十进制型.布尔型. 整型(sbyte.byte.char.short.ushort.int.uint.long.ulong ) 浮点型(float 和 double ) 十进制型(decimal ) 布尔型(bool ) 结构类型(struct) 枚

.Net中值类型和引用类型的区别

解析:CLR支持两种类型:值类型和引用类型.用Jeffrey Richter(<CLR via C#>作者)的话来说,"不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和诸多性能问题".这就要求我们正确理解和使用值类型和引用类型. 值类型包括C#的基本类型(用关键字int.char.float等来声明),结构(用struct关键字声明的类型),枚举(用enum关键字声明的类型):而引用类型包括类(用class关键字声明的类型)和委托(用delegate关键字声明的

【四】使用枚举和结构来创建值类型

enum Season {Spring=0,Summer=22,Fall,Autumn=Fall,Winter=4}Season colorful = Season.Fall;string name = colorful.ToString();Console.WriteLine(colorful);//输出FallConsole.WriteLine(name);//输出FallConsole.WriteLine((int)colorful);//输出23,这里注意23是因为summer的22加了