關於枚舉和結構總結的一個例子

這是自己練習的例子,把例子總結下來,供練習之用。還是看例子吧。

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

namespace ConsoleApp1
{
    enum orientation
    {
        east,
        south,
        west,
        north
    }

    //2.關於枚舉的類型。默認是int,但可以重新定義爲

    enum tiangan : byte//可以爲byte、short、ushort、uint、long和ulong等數值類型
    {
        jia = 5,
        yi,
        bing,
        ding
    }

    //3.默認情況下每個值從0開始。但可以重新賦值,後續值爲前值+1
    enum dizhi
    {
        zi = 11,
        chou = 12,
        yin,//=13,值自動加1
        mao,//=14
        wu,//=15
        ji,//=16
        geng = 11,
        xin,//=12
        ren = chou,//=2
        gui//=13

    }

    //4.枚舉不可以有重複的名稱,但是可以有重複的值。
    enum color
    {
        red = 0,
        orange = 0,
        yellow,
        green,
        black,
        blue,
        purple
    }

    struct route
    {
        public orientation direction;//定義枚舉類型
        public double distance;

    }
    class Program
    {
        //1.關於enum的定義。
        //是程序員自己定義的值類型。
        //枚舉明確指定對變量有效的值,
        //枚舉提供了一種有效的方式來定義可能分配給變量的一組已命名整數常量。
        
        //5.專門處理枚舉的是Enum類(靜態類)。GetName和GetNames是兩個重要方法
        //關於位標誌以後專門學習
        static void Main(string[] args)
        {
            orientation ori = orientation.south;
            Console.WriteLine($"My direction is {ori}");
            //使用強制轉換獲得枚舉值
            int jiazi = (int)dizhi.yin;
            Console.WriteLine($"jiazi的數值是{jiazi}");
            Console.WriteLine($"tiangan的第二個是:{Enum.GetName(typeof(tiangan),2)}");//第一個參數是enum對象,第二個是枚舉的值
            foreach(var i in Enum.GetNames(typeof(tiangan)))//獲得所有枚舉
                Console.WriteLine(i);

            //
            route myRoute;
            int myDirection = -1;
            double myDistance;
            Console.WriteLine("1) North\n2) South\n3) East\n4) West");
            do
            {
                Console.WriteLine("Select a direction:");
                myDirection = Convert.ToInt32(Console.ReadLine());
                
            }
            while((myDirection<1)||(
            myDirection>4));

            //判斷方向和路程
            Console.WriteLine("Input a distance:");
            myDistance = Convert.ToDouble(Console.ReadLine());//調用Convert類確保輸入正確
            myRoute.direction = (orientation)myDirection;//強制類型轉換,把整數轉化爲枚舉
            myRoute.distance = myDistance;
            Console.WriteLine($"myRoute specifies a direction of {myRoute.direction} and a distance of {myRoute.distance}");
        }
    }
}

輸出是:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章