結構體-枚舉類型


一、枚舉類型

      枚舉(enum)是值類型的一種特殊形式,它從System.Enum繼承而來,併為基礎類型的值提供替代名稱。枚舉類型有名稱、基礎類型和一組字段。基礎類型必須是一個除char 類型外的內置的有符號(或無符號)整數類型(如Byte、Int32或UInt64)。也可以説,枚舉類型是一組常量的集合。

1、定義:Enum....{E}

      枚舉元素的默認基礎類型為int。默認情況下,第一個枚舉數的值為0,後面每個枚舉數的值依次遞增1。例如:

  enum meiju://枚舉是常量的集合,一般冒號後面不指定數據類型

        {

        one=3, //枚舉裏面有默認的索引,也可以指定;如索引3,但在控制枱中不起作用;

        two=6,

        three,//用逗號隔開

        four=two,//如果等於之前的一個常量,那麼就等於這個常量;最後一行的逗號可省略

        }       

        static void Main(string[] args)

        {

            Console.WriteLine(meiju.one);

            Console.ReadLine();

2、用法:

   枚舉也可以指定數據類型,一般不指定。

在定義枚舉類型時,可以選擇基類型,但可以使用的基類型僅限於long、int、short和byte。例如:

如: enum meiju:int

二、結構體

      結構類型是用户自己定義的一種類型,它是由其他類型組合而成的,可包含構造函數、常數、字段、方法、屬性、索引器、運算符、事件和嵌套類型的值類型。結構在幾個重要方面不同於類:結構為值類型而不是引用類型,並且結構不支持繼承。

    用結構的主要思想是用於創建小型的對象,如Point和FileInfo等等。這可以節省內存,因為沒有如類對象所需的那樣有額外的引用產生。例如,當聲明含有成千上萬個對象的數組時,這會引起極大的差異。

    結構體是一個變量組,將一組變量放在一起,其實就是一個自定義的集合,裏面可以包含各種類型的數據,用法和集合一樣。

1、定義:

結構體一般定義在Main函數上面,位於Class下面,作為一個類;一般情況Struct定義在Main函數前面,Main函數裏面的地方都可以使用,參數前面加上public代表公用變量。

格式:

struct +結構體的名稱

{

public int+變量名;

public string+變量名;

public int+變量名;

}

    以上就是定義一個結構體的格式,裏面包含許多種數據類型,如整形int,字符串string,帶小數點decimal等;

如果結構體定義在Main函數中,再能在Main函數中使用,一般看情況來定義在Main函數前面,Main函數裏面的所有地方都可以使用,參數前面加上public代表公用變量。

格式:

 struct student

{

public int no;

public string name;

public int Csharp;

public int web;

public int database;

public int sum;

}

2、用法

 1)在Main函數外面定義了一個student類型的結構體,在Main主函數中使用:

 2)然後為裏面的每個元素賦值,結構體名+點+結構體裏面變量名稱=值。

 3)賦值之後完成之後進行打印。

Student lch=new student();//這句是在Main函數裏定義了一個名為lch的student 類型的結構體。

{

lch.no=1;          

lch.name=”李昌輝”;

lch.Cshap=88;

lch.web=90;

lch.database=98;

lch.sum=lch.Cshap+lch.web+lch.database;

}

Console.WriteLine(lch.no,lch.name,lch.Cshap,lch.web,lch.database,lch.sum );

例題:


//定義一個結構體,存放關於車輛的幾個信息             //將所有車的信息都放入集合中             //車型號               價格(W)    軸距 (mm)         油耗(L/100km)             //寶馬320Li           38              2920                      6.9             //寶馬520Li           43              3108                     7.2             //寶馬730Li            89              3210                       6.3             //奧迪A4L35TFSI   31              2869                        6.2             //奧迪A6L30TFSI   43              3012                        7.6             //奧迪A8L45TFSI   89              3122                        8.1             //奔馳C200L           35              2920                        6.1             //奔馳E260L           48              3014                        6.7             //奔馳S320L           93              3165                        8

            //現在想買一輛價格在50萬以內的車,請給出車的型號以及價格                        

            //買得起豪車,可是很關心油耗,給查一下油耗最低的三輛車的型號以及油耗情況

            //買了車之後後座會經常坐人,所有我現在想要軸距大一些的車,前三名即可             //要列出車的型號以及車的軸距

            //有錢就是任性,就買最貴的,不買最好的,直接調出來最貴的車的所有信息

            //本店有哪幾款寶馬車??列出來所有信息

            //本店奔馳車裏面油耗最低的是哪一個?所有信息

            //本店在售車輛中軸距最長的是不是奧迪??

            //本店在售車輛軸距最長的是不是油耗最高的??

            //奔馳車中軸距最長的是哪一輛??

            //就只喜歡寶馬,可是沒多少錢,請列出來現有車輛中最便宜的寶馬車的所有信息

struct car
        {
            public string xinghao;
            public double jia;
            public double zhou;
            public double you;
        }
 static void Main(string[] args)
        {                       
            ArrayList al = new ArrayList();
            car car1 = new car();
            car1.xinghao = "寶馬320Li";
            car1.jia = 38;
            car1.zhou = 2920;
            car1.you = 6.9;
            al.Add(car1);
            car1.xinghao = "寶馬520Li";
            car1.jia = 43;
            car1.zhou = 3108;
            car1.you = 7.2;
            al.Add(car1);
            car1.xinghao = "寶馬730Li";
            car1.jia = 89;
            car1.zhou = 3210;
            car1.you = 6.3;
            al.Add(car1);
            car1.xinghao = "奧迪A4L35TFSI";
            car1.jia = 31;
            car1.zhou = 2869;
            car1.you = 6.2;
            al.Add(car1);
            car1.xinghao = "奧迪A6L30TFSI ";
            car1.jia = 43;
            car1.zhou = 3012;
            car1.you = 7.6;
            al.Add(car1);
            car1.xinghao = "奧迪A8L45TFSI";
            car1.jia = 89;
            car1.zhou = 3122;
            car1.you = 8.1;
            al.Add(car1);
            car1.xinghao = "奔馳C200L";
            car1.jia = 35;
            car1.zhou = 2920;
            car1.you = 6.1;
            al.Add(car1);
            car1.xinghao = "奔馳E260L";
            car1.jia = 48;
            car1.zhou = 3014;
            car1.you = 6.7;
            al.Add(car1);
            car1.xinghao = "奔馳S320L";
            car1.jia = 93;
            car1.zhou = 3165;
            car1.you = 8;
            al.Add(car1);

            //現在想買一輛價格在50萬以內的車,請給出車的型號以及價格
            Console.WriteLine("價格在50萬以內的車的型號:");
            for (int i = 0; i < 9; i++)
            {
                car car2 = new car();
                car2 = (car)al[i];
                if (car2.jia <= 50)
                {
                    Console.WriteLine("型號" + car2.xinghao + "價格" + car2.jia + "萬。");
                }
            }

            //買得起豪車,可是很關心油耗,給查一下油耗最低的三輛車的型號以及油耗情況
            Console.WriteLine();
            Console.WriteLine("油耗最低的三輛車的型號以及油耗情況:");

            for (int i = 0; i < 9; i++)
            {
                car car3 = new car();
                car3 = (car)al[i];
                for (int j = i; j < 9; j++)
                {
                    car car4 = new car();
                    car4 = (car)al[j];
                    if (car3.you < car4.you)
                    {
                        object zhong = al[i];
                        al[i] = al[j];
                        al[j] = zhong;
                    }
                }
            }
            car car5 = new car();
            car5 = (car)al[8];
            Console.WriteLine("型號:" + car5.xinghao + "油耗:" + car5.you);
            car car6 = new car();
            car6 = (car)al[7];
            Console.WriteLine("型號:" + car6.xinghao + "油耗:" + car6.you);
            car car7 = new car();
            car7 = (car)al[6];
            Console.WriteLine("型號:" + car7.xinghao + "油耗:" + car7.you);

            //買了車之後後座會經常坐人,所有我現在想要軸距大一些的車,前三名即可,要列出車的型號以及車的軸距
            Console.WriteLine();
            Console.WriteLine("軸距最大的三輛車:");
            for (int i = 0; i < 9; i++)
            {
                car car2 = new car();
                car2 = (car)al[i];
                for (int j = i; j < 9; j++)
                {
                    car car3 = new car();
                    car3 = (car)al[j];
                    if (car2.zhou < car3.zhou)
                    {
                        object zhong = al[i];
                        al[i] = al[j];
                        al[j] = zhong;
                    }
                }
            }
            car car8 = new car();
            car8 = (car)al[0];
            Console.WriteLine("型號:" + car8.xinghao + "軸距:" + car8.zhou);
            car car9 = new car();
            car9 = (car)al[1];
            Console.WriteLine("型號:" + car9.xinghao + "軸距:" + car9.zhou);
            car car10 = new car();
            car10 = (car)al[2];
            Console.WriteLine("型號:" + car10.xinghao + "軸距:" + car10.zhou);


            //有錢就是任性,就買最貴的,不買最好的,直接調出來最貴的車的所有信息
            Console.WriteLine();
            for (int i = 0; i < 9; i++)
            {
                car car2 = new car();
                car2 = (car)al[i];
                for (int j = i; j < 8; j++)
                {
                    car car3 = new car();
                    car3 = (car)al[j];
                    if (car2.jia < car3.jia)
                    {
                        object zhong = al[i];
                        al[i] = al[j];
                        al[j] = zhong;
                    }
                }
            }
            car car11 = new car();
            car11 = (car)al[0];
            Console.WriteLine("最貴的車的型號:{0},價格:{1}, 軸距:{2},油耗:{3}。", car11.xinghao, car11.jia, car11.zhou, car11.you);


            //本店有哪幾款寶馬車??列出來所有信息
            Console.WriteLine();
            Console.WriteLine("本店有以下幾款寶馬車系:");
            for (int i = 0; i < 9; i++)
            {
                car car2 = new car();
                car2 = (car)al[i];
                if (car2.xinghao.Contains("寶馬"))
                {
                    Console.WriteLine("型號:" + car2.xinghao + ",價格:" + car2.jia + ",軸距:" + car2.zhou + ",油耗:" + car2.you);
                }
            }

            //本店奔馳車裏面油耗最低的是哪一個?所有信息
            Console.WriteLine();
            Console.WriteLine("油耗最低的奔馳車:");
            ArrayList ben = new ArrayList();
            for (int k = 0; k < 9; k++)
            {
                car car2 = new car();
                car2 = (car)al[k];                
                if (car2.xinghao.Contains("奔馳"))
                {
                    ben.Add(car2);                    
                }
                for (int i = 0; i <ben.Count; i++)
                {
                    car car3 = new car();
                    car3 = (car)ben[i];
                    for (int j = i; j < ben.Count; j++)
                    {
                        car car4 = new car();
                        car4 = (car)ben[j];
                        if (car3.you > car4.you)
                        {
                            object zhong = ben[i];
                            ben[i] = ben[j];
                            ben[j] = zhong;
                        }
                    }
                }               
            }
            car car12 = new car();
            car12 = (car)ben[0];
            Console.WriteLine("型號:" + car12.xinghao + ",價格:" + car12.jia + ",軸距:" + car12.zhou + ",油耗:" + car12.you);

            //本店在售車輛中軸距最長的是不是奧迪??      
            Console.WriteLine();
            for (int i = 0; i < 9; i++)
            {
                car car2 = new car();
                car2 = (car)al[i];
                for (int j = i; j < 9; j++)
                {
                    car car3 = new car();
                    car3 = (car)al[j];
                    if (car2.zhou < car3.zhou)
                    {
                        object zhong = al[i];
                        al[i] = al[j];
                        al[j] = zhong;
                    }
                }
            }
            car car14=new car();
            car14=(car)al[0];
            if (car14.xinghao.Contains("奧迪"))
            {
                Console.WriteLine("本店在售車輛中軸距最長的是奧迪車系");
            }
            else
            {
                Console.WriteLine("本店在售車輛中軸距最長的不是奧迪車系");
            }


            //本店在售車輛軸距最長的是不是油耗最高的??
            Console.WriteLine();
            for (int i = 0; i < 9; i++)
            {
                car car2 = new car();
                car2 = (car)al[i];
                for (int j = i; j < 9; j++)
                {
                    car car3 = new car();
                    car3 = (car)al[j];
                    if (car2.zhou < car3.zhou)
                    {
                        object zhong = al[i];
                        al[i] = al[j];
                        al[j] = zhong;
                    }
                }
            }
            car car15 = new car();
            car14 = (car)al[0];

            for (int i = 0; i < 9; i++)
            {
                car car3 = new car();
                car3 = (car)al[i];
                for (int j = i; j < 9; j++)
                {
                    car car4 = new car();
                    car4 = (car)al[j];
                    if (car3.you < car4.you)
                    {
                        object zhong = al[i];
                        al[i] = al[j];
                        al[j] = zhong;
                    }
                }
            }
            car car16 = new car();
            car16=(car)al[0];
            if (car15.xinghao == car16.xinghao)
            {
                Console.WriteLine("本店在售車輛軸距最長的是油耗最高的");
            }
            else
            {
                Console.WriteLine("本店在售車輛軸距最長的不是油耗最高的");
            }


            //奔馳車中軸距最長的是哪一輛??
            Console.WriteLine();
            Console.Write("奔馳車中軸距最長的是:");
            ArrayList ben1 = new ArrayList();
            for (int k = 0; k < 9; k++)
            {
                car car2 = new car();
                car2=(car)al[k];
                if (car2.xinghao.Contains("奔馳"))
                {
                    ben1.Add(car2);
                }
                for (int i = 0; i <ben1.Count; i++)
                {
                    car car3 = new car();
                    car3 = (car)ben1[i];
                    for (int j = i; j < ben1.Count; j++)
                    {
                        car car4 = new car();
                        car4 = (car)ben1[j];
                        if (car3.zhou < car4.zhou)
                        {
                            object zhong = ben1[i];
                            ben1[i] = ben1[j];
                            ben1[j] = zhong;
                        }
                    }
                }
            }
            car car17=new car();
            car17=(car)ben1[0];
            Console.WriteLine("   型號:"+car17.xinghao);

            //就只喜歡寶馬,可是沒多少錢,請列出來現有車輛中最便宜的寶馬車的所有信息
            Console.WriteLine();
            Console.Write("寶馬車系中最便宜的寶馬:");
            ArrayList bao = new ArrayList();
            for (int k = 0; k < 9; k++)
            {
                car car2 = new car();
                car2=(car)al[k];
                if (car2.xinghao.Contains("寶馬"))
                {
                    bao.Add(car2);
                }
                for (int i = 0; i < bao.Count; i++)
                {
                    car car3 = new car();
                    car3 = (car)bao[i];
                    for (int j = i; j < bao.Count; j++)
                    {
                        car car4 = new car();
                        car4 = (car)bao[j];
                        if (car3.jia > car4.jia)
                        {
                            object zhong=bao[i];
                            bao[i] = bao[j];
                            bao[j] = zhong;
                        }
                    }
                }
            }
            car car18 = new car();
            car18=(car)bao[0];
            Console.Write("型號:"+car18.xinghao+",價格:"+car18.jia+",軸距:"+car18.zhou+",耗油:"+car18.you);


        }

ENUM 類型需要建索引嘛_i++