自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析枚舉的幾種類型

開發(fā) 開發(fā)工具
我們今天要談?wù)劽杜e的幾種類型,枚舉類型定義了一系列有序值的集合。集合中的有序值可以稱為元素,元素一般從0開始索引,

  枚舉類型定義了一系列有序值的集合。枚舉變量就是從這個(gè)既定的集合中取某個(gè)值。集合中的有序值可以稱為元素,元素一般從0開始索引(也就是元素的順序號)。

  定義一個(gè)枚舉類型,采用以下的格式:

  type typeName = (val1, ..., valn)

  其中typeName和每一個(gè)val都必須是有效的標(biāo)識符。

  VCL中有很多地方用到了枚舉類型,比如Object InspectorFormBorderStyles屬性就是,并且有一個(gè)下拉列表框選值,如下圖:

我們舉一個(gè)完整的例子來看看枚舉的類型的方方面面。

  1、新建一個(gè)Console Application。

  2、然后我們直接輸入下面的代碼吧,請仔細(xì)看注釋喲,如下:

 

  1.   program Project1;  
  2.   {$APPTYPE CONSOLE}  
  3.   uses  
  4.   SysUtils;  
  5.   { type中定義枚舉類型}  
  6.   type  
  7.   TSize = (Small = 5, Medium = 10, BeforLarge, Large = Small + Medium);  
  8.   { TSize中因?yàn)镸edium被索引為10,Small被索引為5,所以Large的索引為10 + 5 = 15}  
  9.   TMyColor = (mcRed, mcBlue, mcGreen, mcYellow, mcOrange);  
  10.   {mcRed = 0, mcBlue = 1, mcGreen = 2, mcYellow = 3, mcOrange = 4}  
  11.   TAnswer = (ansYes, ansNo, ansMaybe = 1);  
  12.   { ansMaybe 為 1, 那么ansYes = 0, ansNo = 1}  
  13.   var  
  14.   Size: TSize; { 聲明TSize枚舉類型的變量}  
  15.   MyColor: TMyColor;  
  16.   Answer: TAnswer;  
  17.   MyCard: (Club, Diamond, Heart, Spade); { 也可以這樣直接聲明}  
  18.   //Card1: (Club, Diamond, Heart, Spade);  
  19.   { 此句編譯后導(dǎo)致錯誤,提示"Identifier redeclared"}  
  20.   begin  
  21.   Size := BeforLarge; { Ord(Size) = 11}  
  22.   Writeln('BeforLarge在TSize中的索引為:' + IntToStr(Ord(Size)));  
  23.   { 顯示11,因?yàn)镸edium被索引為10,因此其后序索引為11}  
  24.   Size := Large; { Ord(Size) = 15}  
  25.   Writeln('Large在TSize中的索引為:' + IntToStr(Ord(Size))); { 顯示11}  
  26.   Size := TSize(6); { Ord(Size) = 6}  
  27.   Writeln('TSize(6)在TSize中的索引為:' + IntToStr(Ord(Size))); { 顯示6}  
  28.   Inc(Size); { Ord(Size) = 7}  
  29.   Writeln('Inc(Size)在TSize中的索引為:' + IntToStr(Ord(Size))); { 顯示7}  
  30.   { 我們來看看TAnswer中元素的索引}  
  31.   Answer := ansYes;  
  32.   Writeln('ansYes在TAnswer中的索引為:' + IntToStr(Ord(Answer)));  
  33.   Answer := ansNo;  
  34.   Writeln('ansNo在TAnswer中的索引為:' + IntToStr(Ord(Answer)));  
  35.   Answer := ansMaybe;  
  36.   Writeln('ansMaybe在TAnswer中的索引為:' + IntToStr(Ord(Answer)));  
  37.   { 因?yàn)閍nsNo和ansMaybe具有相同的索引值,所以兩個(gè)元素表現(xiàn)為相同值}  
  38.   Readln;  
  39.   end. 

 

  3、運(yùn)行,以檢驗(yàn)結(jié)果,如下:

Note

  Enumerated constants without a specific value have RTTI(不指定元素的索引的枚舉類型可以生成運(yùn)行時(shí)類型信息(RTTI))

  type SomeEnum = (e1, e2, e3);

  whereas enumerated constants with a specific value, such as the following, do not have RTTI:(指定了元素索引的枚舉類型將不可以生成運(yùn)行時(shí)類型信息,如下所示)

  type SomeEnum = (e1 = 1, e2 = 2, e3 = 3);

  以上代碼均在Delphi7中測試通過。

原文鏈接:http://www.cnblogs.com/pchmonster/archive/2011/12/23/2300039.html

【編輯推薦】

  1. Java和C++在細(xì)節(jié)上的差異:枚舉與反射
  2. C++的中的結(jié)構(gòu)體和枚舉
  3. WCF枚舉實(shí)現(xiàn)技巧總結(jié)
  4. VB.NET枚舉增加編程速率
  5. WCF枚舉類型使用注意事項(xiàng)介紹
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2010-03-12 17:29:16

Python模塊

2025-01-20 00:13:19

TypeScript操作符數(shù)據(jù)類型

2009-08-18 09:37:14

C#枚舉類型

2009-08-18 10:35:46

C#枚舉類型

2009-08-18 12:52:33

C#枚舉類型

2009-09-14 15:12:30

XML節(jié)點(diǎn)類型

2022-06-27 11:09:06

邊緣計(jì)算

2009-08-18 13:00:59

C#枚舉類型

2009-07-07 18:06:14

JDK1.5枚舉類型

2021-12-20 23:24:40

前端測試開發(fā)

2022-06-27 09:45:22

MySQL索引

2009-08-18 09:51:18

C#枚舉類型

2009-08-18 10:41:38

C#枚舉類型

2010-04-16 14:39:54

ORACLE鎖

2010-02-04 11:32:01

數(shù)據(jù)交換技術(shù)

2021-09-09 13:53:08

區(qū)塊鏈加密貨幣技術(shù)

2022-02-25 14:06:01

區(qū)塊鏈生態(tài)系統(tǒng)技術(shù)

2021-03-11 14:46:05

C++類型轉(zhuǎn)換語言

2020-12-30 07:55:37

C++轉(zhuǎn)換類型

2022-08-31 07:04:50

Bean作用域
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號