iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
自我挑戰組

C# 雞礎觀念系列 第 11

[Day11]C# 雞礎觀念- 把複雜的事情與關係簡單化~列舉與結構

  • 分享至 

  • xImage
  •  

在電腦世界中,很多編碼都是複雜且看不懂的,
例如顏色編碼,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

有了列舉跟結構體,讓我們寫程式可以更加明確地去處理資料,也讓可讀性更好


上一篇
[Day10]C# 雞礎觀念- 重播與停止 while迴圈與break
下一篇
[Day12]C# 雞礎觀念- 當我們同在一起~陣列(Array)
系列文
C# 雞礎觀念32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言