【C#补全计划:枚举】

一、前言

C#补全计划,是一个新的系列。这个系列适合有一定C、C++、Java语言基础(了解基本程序控制语句、面向对象、数据结构等)、并在为Unity开发做基础的同学学习。在这里,我们会学习到在别的语言中没有出现而在C#中新出现的知识点。并且在后面的学习中,也会对C#进行深入学习。

二、C#的基本结构

cs 复制代码
using System;

namespace Enumerate
{
    class Test
    {
        static void Main(string[] args)
        {
            // 程序从这里运行
        }
    }
}

using:使用命名空间xxx。用来引入包,相当于C语言的include或Java的import。

namespace:被他包括的代码块的命名空间是什么。用来管理项目结构,其他代码可以导入该命名空间来调用该命名空间中的代码。

class:类。和C++、Java的用法相同

static void Main(string\[\] args):主函数。程序的入口,相当于C语言的int main()或Java的public static void main(String\[\] args)

三、枚举的基本语法

  1. 枚举声明位置:

namespace语句块中。(常用)

class或struct中。

注意:枚举不能再函数体内声明!!!

  1. 创建枚举类型
cs 复制代码
using System;

namespace Enumerate
{
    // 声明枚举变量
    enum ETypeName
    {
        enumName1,
        enumName2,
        enumName3,
        enumName4
    }

    class Test
    {
        static void Main(string[] args)
        {
            // 程序从这里运行
        }
    }
}

语法:enum 枚举类型名{ 枚举项名1, 枚举项名2, ... }

  1. 使用枚举类型
cs 复制代码
using System;

namespace Enumerate
{
    // 声明枚举变量
    enum ETypeName
    {
        enumName1,
        enumName2,
        enumName3,
        enumName4
    }

    class Test
    {
        static void Main(string[] args)
        {
            // 程序从这里运行
            // 使用枚举变量
            ETypeName e1 = ETypeName.enumName1;
            ETypeName e2 = ETypeName.enumName2;
            ETypeName e3 = ETypeName.enumName3;
            ETypeName e4 = ETypeName.enumName4;
        }
    }
}

语法:枚举类型名 枚举变量名 = 枚举类型名.枚举项名;

四、枚举的默认值

默认值:默认第一个为0、下一个的值是上一个的值的递增。

也可以手动赋值。语法如下:

cs 复制代码
using System;

namespace Enumerate
{
    // 声明枚举变量
    enum ETypeName
    {
        enumName1 = 1,
        enumName2, // 默认值为2
        enumName3 = 100,
        enumName4 // 默认值为101
    }

    class Test
    {
        static void Main(string[] args)
        {
            // 程序从这里运行
            // 使用枚举变量
            ETypeName e1 = ETypeName.enumName1;
            ETypeName e2 = ETypeName.enumName2;
            ETypeName e3 = ETypeName.enumName3;
            ETypeName e4 = ETypeName.enumName4;
        }
    }
}

语法:枚举项名 = 默认值(整数数字);

五、枚举的类型转换

  1. 枚举类型转整型:
cs 复制代码
using System;

namespace Enumerate
{
    // 声明枚举变量
    enum ETypeName
    {
        enumName1 = 1,
        enumName2, // 默认值为2
        enumName3 = 100,
        enumName4 // 默认值为101
    }

    class Test
    {
        static void Main(string[] args)
        {
            // 程序从这里运行
            // 使用枚举变量
            ETypeName e1 = ETypeName.enumName1;
            ETypeName e2 = ETypeName.enumName2;
            ETypeName e3 = ETypeName.enumName3;
            ETypeName e4 = ETypeName.enumName4;

            // 枚举类型转换为整型
            int i1 = (int)e1;
            int i2 = (int)e2;
            int i3 = (int)e3;
            int i4 = (int)e4;

            // 输出数字
            Console.WriteLine(i1);
            Console.WriteLine(i2);
            Console.WriteLine(i3);
            Console.WriteLine(i4);
        }
    }
}

运行结果如下:

  1. 整型转枚举类型:
cs 复制代码
using System;

namespace Enumerate
{
    // 声明枚举变量
    enum ETypeName
    {
        enumName1 = 1,
        enumName2, // 默认值为2
        enumName3 = 100,
        enumName4 // 默认值为101
    }

    class Test
    {
        static void Main(string[] args)
        {
            // 程序从这里运行
            // 使用枚举变量
            ETypeName e1 = ETypeName.enumName1;
            ETypeName e2 = ETypeName.enumName2;
            ETypeName e3 = ETypeName.enumName3;
            ETypeName e4 = ETypeName.enumName4;

            // 整型转换为枚举类型
            e1 = 0;
            e2 = (ETypeName)1;
            e3 = (ETypeName)2;
            e4 = (ETypeName)3;

            // 输出枚举
            Console.WriteLine((int)e1);
            Console.WriteLine((int)e2);
            Console.WriteLine((int)e3);
            Console.WriteLine((int)e4);
        }
    }
}

运行结果如下:

  1. 枚举类型转字符串类型:
cs 复制代码
using System;

namespace Enumerate
{
    // 声明枚举变量
    enum ETypeName
    {
        enumName1 = 1,
        enumName2, // 默认值为2
        enumName3 = 100,
        enumName4 // 默认值为101
    }

    class Test
    {
        static void Main(string[] args)
        {
            // 程序从这里运行
            // 使用枚举变量
            ETypeName e1 = ETypeName.enumName1;
            ETypeName e2 = ETypeName.enumName2;
            ETypeName e3 = ETypeName.enumName3;
            ETypeName e4 = ETypeName.enumName4;

            // 枚举类型转换为字符串类型
            string s1 = e1.ToString();
            string s2 = e2.ToString();
            string s3 = e3.ToString();
            string s4 = e4.ToString();

            // 输出枚举
            Console.WriteLine(s1);
            Console.WriteLine(s2);
            Console.WriteLine(s3);
            Console.WriteLine(s4);
        }
    }
}

运行结果如下:

  1. 字符串类型转枚举类型:
cs 复制代码
using System;

namespace Enumerate
{
    // 声明枚举变量
    enum ETypeName
    {
        enumName1 = 1,
        enumName2, // 默认值为2
        enumName3 = 100,
        enumName4 // 默认值为101
    }

    class Test
    {
        static void Main(string[] args)
        {
            // 程序从这里运行
            // 使用枚举变量
            ETypeName e1 = ETypeName.enumName1;
            ETypeName e2 = ETypeName.enumName2;
            ETypeName e3 = ETypeName.enumName3;
            ETypeName e4 = ETypeName.enumName4;

            // 字符串类型转换为枚举类型
            e1 = (ETypeName)Enum.Parse(typeof(ETypeName), "enumName1");
            e2 = (ETypeName)Enum.Parse(typeof(ETypeName), "enumName2");
            e3 = (ETypeName)Enum.Parse(typeof(ETypeName), "enumName3");
            e4 = (ETypeName)Enum.Parse(typeof(ETypeName), "enumName4");

            // 输出枚举
            Console.WriteLine(e1);
            Console.WriteLine(e2);
            Console.WriteLine(e3);
            Console.WriteLine(e4);
        }
    }
}

运行结果如下:

今天的学习就到这里了。感谢阅读。

再见!

相关推荐
zlinear数据采集卡17 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai18 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库
瑞码空间18 小时前
Java 图形界面(GUI)完整知识点手册
java·开发语言·图形界面·swing
小努蛋18 小时前
linux编译openresty异常问题,lua_cjson.c:706:5: 错误: ‘for‘ 循环初始化声明只在 C99 或 C++ 模式下允许
开发语言·lua·openresty
qz_Serene19 小时前
C++:类和对象(上)
开发语言·c++
唐青枫19 小时前
别把 ImmutableArray 当成只读 List:C#.NET 不可变数组深入详解
c#·.net
西安景驰电子19 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
ctlover19 小时前
Python文件操作
开发语言·python
luj_176819 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法