[Day11]C# 鸡础观念- 把复杂的事情与关系简单化~列举与结构

在电脑世界中,很多编码都是复杂且看不懂的,
例如颜色编码,FF0000代表红色,800080代表绿色,
你不说,我不说,没人知道这编码代表的意思,
我们今天就来将编码简化吧

列举(enum)/images/emoticon/emoticon66.gif

  • 列举类型(Enueration type)能把字串映射到数字
  • 增加可读性也可参加计算
  • 结构如下
    https://ithelp.ithome.com.tw/upload/images/20210909/20097001LTMmcCPN7j.png

!注意!:WeekDays不是变数,而是一种数据类型,是和int,double,string等一样的数据类型,该列举类型的值只能是七个列举项之一,每个列举表面上是一个字串,背後都关联着一个整数值,默认情况第一个为0之後依序递增

范例:我们来用列举定义星期吧

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

namespace CsharpDemo
{
    class Program
    {
        //宣告星期的列举
        enum WeekDays { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期天 }
        static void Main(string[] args)
        {
            int a = Convert.ToInt32(Console.ReadLine());

            //将读到的数字转为星期
            WeekDays today = (WeekDays)a;

            //判断今天是否为假日
            if ((today == WeekDays.星期天 || today == WeekDays.星期六))
            {
                Console.WriteLine("放!假!啦!!!!");
            }
            else
            {
                Console.WriteLine("无情上班日!");
            }
            Console.ReadKey();
        }
    }
  }

输入:

1

结果:

1
无情上班日!

输入:

6

结果:

6
放!假!啦!!!!

列举规则

  • 在默认情况之下,都是整数(int)类型
  • 如果有其他需要,我们可以自定义列举型态
  • 关联直可以是byte,sbyte,short,ushort,int,uint,long和ulong等类型

范例: 将列举改成short型别

 enum WeekDays : short
        {
            星期一,
            星期二,
            星期三,
            星期四,
            星期五,
            星期六,
            星期日
        }

使用列举的好处:

  • 使用值标示代替数字,增强程序的可读性。
  • 使每个列举都关联着一个数字,可参加计算和循环。
  • 列举变数只能举列举项中的值,有利於编译器检查出非法的赋值。

结构体(Structure)/images/emoticon/emoticon07.gif

  • 很多互相联系的信息组成一个整体
  • C#中我们可以把这些紧密联系的变数定义成结构体(Structure)

范例:我们来定义一个简单的结构体与他的数据成员吧

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

namespace CsharpDemo
{
    class Program
    {
        /// <summary>
        /// 学生,结构体
        /// </summary>
        struct Student
        {
            //学号
            public int number;
            //姓名
            public string name;
            //性别
            public string sex;
            //生日
            public string birthday;
        }

        static void Main(string[] args)
        {
            Student boy;//宣告变数boy
            boy.number = 5487;
            boy.name = "孤独一只鸡";
            boy.sex = "公";
            boy.birthday = "1111.01.01";


            Student girl;//宣告变数girl
            girl.number = 9527;
            girl.name = "孤独九十九只鸡";
            girl.sex = "母";
            girl.birthday = "9999.09.09";


            Console.WriteLine("学号:" + boy.number);
            Console.WriteLine("姓名:" + boy.name);
            Console.WriteLine("性别:" + boy.sex);
            Console.WriteLine("生日:" + boy.birthday);
            Console.WriteLine("");

            Console.WriteLine("学号:" + girl.number);
            Console.WriteLine("姓名:" + girl.name);
            Console.WriteLine("性别:" + girl.sex);
            Console.WriteLine("生日:" + girl.birthday);
            Console.ReadKey();
        }
    }
  }

结果:

学号:5487
姓名:孤独一只鸡
性别:公
生日:1111.01.01

学号:9527
姓名:孤独九十九只鸡
性别:母
生日:9999.09.09

有了列举跟结构体,让我们写程序可以更加明确地去处理资料,也让可读性更好


<<:  每个人都该学的30个Python技巧|技巧 12:终止回圈咒语—break及continue(字幕、衬乐、练习)

>>:  [iT铁人赛Day12]JAVA回圈范例

IOS 菜菜菜鸟30天挑战 Day-28 下拉式选单

大家有没有试过点开选项的时候选单会往下衍生,那就是下拉式选单啦~ 今天来教大家怎麽制作一个简易下拉式...

Day 12 强化学习 (Reinforcement Learning)

强化学习什麽是? 简称RL,在没有以往资料的前提下,将模型放到使用环境中,透过一些操作观察环境状态,...

[Day4] 语言模型(一)-N-gram

一. 何谓语言模型 断完词後,我们希望可以用这些词做什麽呢?用途很多,但大部分的情况基本上是希望训练...

TCP/IP vs OSI,网际网路中的协议模型

接下来的几篇,我们来看看网路中的协议到底规范了哪些东西,为什麽要有这些规则?又有何优缺点? 首先来看...

第60天~

这个得上一篇:https://ithelp.ithome.com.tw/articles/10263...