C# 入门数据类型(补充)

前面我们有简单的介绍了一下数组,后来考虑了一下,还是在这里增加一个补充说明一下。本篇除了说明数组外,还增加另外两个数据类型:枚举和结构。

我们首先来看一下枚举:
枚举其实就是通过使用对人类友好的标记(变量名称),来代替声明一些数据。通常适用于一些离散固定的数据,如,月份,季节等等。枚举的默认数据类型为 init。

语法格式:

enum <identifier> [:enum_base]
{ 
    enumeration list
};

下面我们来看一个具体的示例:

using System;

namespace enumTest3
{
    class Program
    {
        enum WeekDays
        {
            Sun, Mon, Tue, Wed, Thu, Fri, Sat
        };
        static void Main(string[] args)
        {
            Console.WriteLine(WeekDays.Sat);
            Console.WriteLine((int)WeekDays.Sun);
        }
    }
}

我们定义的一个名为 WeekDays 的枚举(枚举名的首字母必须大写),枚举列表为 {Sun, Mon, Tue, Wed, Thu, Fri, Sat},每个枚举列表的值中,都有一个对应的 init 数字,默认从 0 开始,如果你不想从 0 开始,想从 1 开始,可以使用{Sun=1, Mon, Tue, Wed, Thu, Fri, Sat}。然后通过 Console.WriteLine() 输出枚举列表的内容,本示例中,输出了两种情况,一个是直接输入枚举列表内容的名称(Sat),还有一个是通过 “(init)” 输出 sun 对应的数字(值)。

运算结果:
https://ithelp.ithome.com.tw/upload/images/20210908/20099494sG0dqQNS7s.png

枚举的数据类型可以是:byte、sbyte、short、ushort、int、unit、long、ulong。

接下来我们要讲的是结构(struct)
枚举的数据类型必须要一致,也就是说一个枚举的声明中,大家都属于同一类型的数据。
而结构中,允许有不同类型的数据。

语法格式:

struct <identifier>
{
    <accessibility> <type> <name>;
    <accessibility> <type> <name>;
}

下面我们来看一下结构的示例:

using System;

namespace structTest
{
    struct students
    {
        public int id;
        public int age;
        public string gender;
    }
    class Program
    {
        static void Main(string[] args)
        {
            students Tom;   // 定义该结构类型的数据
            students Jerry;

            Tom.id = 00001;
            Tom.age = 25;
            Tom.gender = "male";

            Jerry.id = 00002;
            Jerry.age = 24;
            Jerry.gender = "male";

            Console.WriteLine($"Tom is {Tom.age} years old");

            Console.WriteLine($"Jerry is {Jerry.age} years old.");
        }
    }
}

结构,类似于数据的结构,所有的数据,都依照已经定义好的结构,录入数据。并在定义结构时,定义数据的类型。

运行结果:
https://ithelp.ithome.com.tw/upload/images/20210908/20099494juLJhKRbfD.png

下面我们来看一下数组:
以上的数据类型有一个特点,一个名称,都只能有对应的一个值,但有些情况下,我们可能需要,有多个值,如,我们前面的示例中,现在要录入学生选择的课程,有同学可能有多门课程,这个时候,就需要使用到我们的数组了。

using System;

namespace structTest
{
    struct students
    {
        public int id;
        public int age;
        public string gender;
        public string[] course;     // 定义了一个数组
    }
    class Program
    {
        static void Main(string[] args)
        {
            students Tom;   // 定义该结构类型的数据
            students Jerry;

            Tom.id = 00001;
            Tom.age = 25;
            Tom.gender = "male";
            Tom.course = new string[] { "Math" };   //初始化数组

            Jerry.id = 00002;
            Jerry.age = 24;
            Jerry.gender = "male";
            Jerry.course = new string[] { "English" };

            foreach ( string i in Tom.course)    # 对数组的值进行处理
            {
                if (i == "Math")
                {
                    Console.WriteLine($"Tom chose {i}.");
                }
            }

            foreach (string i in Jerry.course)
            {
                if (i == "English")
                {
                    Console.WriteLine($"Jerry chose {i}.");
                }
            }

            
        }
    }
}

运行结果:
https://ithelp.ithome.com.tw/upload/images/20210908/20099494F4XP6Hrlqi.png


<<:  Day 8 - 导入 Google Fonts

>>:  [Day08] JavaScript - 回圈_part 2

ThinkPHP V5.1 新增控制器

还不会创建ThinkPHP V5.1专案的朋友们可以先去看看创建ThinkPHP V5.1专案。 何...

【Day07】事件处理 Handling Events

React 事件处理 React 和 HTML 事件处理的语法略有不同: HTML 的事件语法: &...

Day 06 - Snapshots

本篇重点 Snapshots 介绍与属性说明 VS Code 查看Function参数内容 Snap...

自动化 End-End 测试 Nightwatch.js 之踩雷笔记:等待物件

前一篇利用 Nightwatch.js 的 pause(),并透过 global 设定了不同的等待时...

Angular 深入浅出三十天:表单与测试 Day24 - Reactive Forms 进阶技巧 - Auto-Complete Searching

在日常生活中,大家应该满常看到有些系统的搜寻输入框是可以在一边打字的同时,一边将搜寻结果呈现在一个...