當前位置:首頁 » 編程軟體 » 枚舉類編譯後用什麼類型存儲

枚舉類編譯後用什麼類型存儲

發布時間: 2022-11-22 02:39:16

A. C#中枚舉使用

enum student{a,b,c,d,e}
其中enum代表student為枚舉類型 enum枚舉屬於值類型 不屬於引用類型
也就是說,a=0,b=1,c=2,d=3,e=4,
當student.a使用該枚舉時,可用一個int類型的變數來接收此值
也就是int num = student.a ; 相當於 int num = 1;
有些時候,我們需要向資料庫里存放一些代表著標示意義的值
但是存字元串會增加資料庫的負載能力
於是.net便發明了這種枚舉類型
用於更好的在編程過程中記憶每一個標示數字所代表的意義
比如:
男和女
我們想存放在資料庫中這兩個值,直接存放「男」,「女」這兩個char或者string值也可以
但是最優的方式便是存放int類型的值 如0代表男,1代表女
那麼我們就創建一個枚舉類
enum gender{boy,girl}
在取值的時候就用gender.boy來代表男 gender.girl代表女
這時存放資料庫中的值就是0和1了

說的比較亂 沒整理 想到哪寫到哪了 不知道對你有沒有幫助 不懂的話可以加我QQ2388894467

B. C++ 中的 enum 結構在內存中是怎麼存儲

enum是常量,類似於#define,只不過它的成員值是編譯器自動賦值,也不可更改。
不存在存儲問題,它是直接在指令中以常數的形式存在。

C. c# 枚舉類型

實際上這只是表面的語法
我研究過MSIL(微軟中間語言,也就是C#編譯後的中間語言)
事實上,通過分析MSIL代碼可知,枚舉類型在實際運行的時候就是整型常量
所以不要被表面的語法蒙蔽
樓主有興趣可以看看你的程序反編譯後的MSIL

D. 在資料庫中存枚舉值,用數字還是字元好

這個要看你的 枚舉, 是 僅僅一次只能選擇一個的? 還是一次可以選擇多個的.

例如你的
order_id order_status
1 SUCS(成功success)
2 PCES(處理process)

某行數據, 要麼就是 SUCS(成功success) , 要麼就是 PCES(處理process)
這種情況下, 用字元是比較合適的。

但是如果枚舉是可以選擇多個的, 例如:
id desc
1 無黨派
2 知識分子
4 少數民族
8 女性
16 ......

這種情況下, 如果一個人, 多個枚舉都滿足的情況下, 那麼這種情況下, 使用 數字 是比較適合的。
也就是
如果某個人,是 無黨派漢族女性研究生, 那麼枚舉值 = 1+2+8

E. Swift-細說枚舉(Enum)

聲明一個方向的枚舉,包含四個枚舉值: 東/西/南/北.

Swift 的枚舉成員在被創建時本身就是完備的值,這些值的類型是已經明確定義好的 Direction 類型. 不會像 Objective-C 一樣被賦予一個默認的整型值。在上面的 Direction 例子中,east、west 、north、south不會被隱式地賦值為 0,1,2 和 3。

Swift 中的枚舉更加靈活,不必給每一個枚舉成員提供一個值。如果給枚舉成員提供一個值(稱為原始值),則該值的類型可以是:字元串、字元、任意的整數值或浮點類型。

Swift的枚舉類型提供了一個叫原始值(RawValues)的實現,它為枚舉項提供了一個默認值,這個默認值在編譯期間就是確定的。

通過原值值獲取的枚舉項是可選類型的,所以需要用if let 做一下判斷。

未指定枚舉值類型

隱式原始值

隱式原始值下枚舉項使用系統的分配值:

顯式原始值

隱式 + 顯式原始值

這里使用了屬性觀察者,Swift裡面的枚舉更像一個對象,因此可以很方便的使用屬性觀察者對枚舉值進行監聽。

在 Swift 中,還可以定義這樣的枚舉類型,它的每一個枚舉項都有一個附加信息,來擴充這個枚舉項的信息表示,這又叫做關聯值。

一定要學會使用關聯值,這一點很重要。具體的使用後面的第九節會細說

通常情況下枚舉是很容易進行相等判斷的。一旦為枚舉增加了關聯值,Swift就沒法正確的比較了,需要自己對該枚舉實現 == 運算符。

藉助 Comparable 協議,來實現枚舉的比較。

遵守 CaseIterable 協議的swift枚舉是可以遍歷的,通過allCases獲取所有的枚舉成員.

app裡面的介面地址,如果都放一起,命名或者尋找都不方便,可以用枚舉的嵌套來設計。可以分散在多個文件中,方便維護和管理。

用枚舉來管理系統裡面的常量是一個不錯的選擇。

枚舉中不能使用存儲屬性,但是可以使用計算屬性,計算屬性的內容是在枚舉值或者枚舉關聯值中得到的。

在這里,可以認為枚舉是一個類,introced是一個成員方法,AppleDeivce.iPhone 就是一個AppleDeivce的實例,case們是它的屬性。introced裡面的switch self,其實就是遍歷這個匿名屬性的所有場景,如iPad,iPhone等,然後根據不同的場景返回不同的值。

可以做枚舉的自定義構造方法。

系統的列印協議

讓枚舉遵守這個協議

枚舉可以進行擴展。可以將枚舉中的case與method/protocol分隔開,閱讀者可以快速消化枚舉的內容。

設計一個網路類下的錯誤信息的處理功能。

在項目中經常使用 UserDefaults 來存儲一下簡單的用戶信息。但是對 Key 的維護不會很方便。而且會想不起來。用枚舉+結構體就能很好的解決這個問題。

這么設計APP的存儲模塊,是不是更有層級感,更加方便使用呢?

遞歸枚舉是擁有另一個枚舉作為枚舉成員關聯值的枚舉。當編譯器操作遞歸枚舉時必須插入間接定址層。可以在聲明枚舉成員之前使用 indirect關鍵字來明確它是遞歸的。 也可以聲明在整個枚舉前,讓所有的枚舉成員都是遞歸的。

F. struct和enum 存放在那個數據區域

看情況,全局聲明的變數存放於數據段,函數內聲明的局部變數存放於棧。
enum類型在編譯時直接轉化為整數,32位上長度是4位元組

堆(heap):堆是用於存放進程運行中被動態分配的內存段,它的大小並不固定,可動態擴張或縮減。當進程調用malloc等函數分配內存時,新分配的內存就被動態添加到堆上(堆被擴張);當利用free等函數釋放內存時,被釋放的內存從堆中被剔除(堆被縮減)

棧(stack):棧又稱堆棧,是用戶存放程序臨時創建的局部變數,也就是說我們函數括弧「{}」中定義的變數(但不包括static聲明的變數,static意味著在數據段中存放變數)。除此以外,在函數被調用時,其參數也會被壓入發起調用的進程棧中,並且待到調用結束後,函數的返回值也會被存放回棧中。由於棧的先進先出特點,所以棧特別方便用來保存/恢復調用現場。從這個意義上講,我們可以把堆棧看成一個寄存、交換臨時數據的內存區。

G. 如何實現 enum 的多選

enum 是一種簡單數據結構,因此需要預先定義結構,不能在方法體中定義。enum 用中文來說是就列舉幾種可能性。定義一個可能的范圍。
enum枚舉類型聲明為一組相關的符號常數定義了一個類型名稱,enum枚舉是值類型,數據直接存儲在棧中,而不是使用引用和真實數據的隔離方式來存儲。枚舉用於「多項選擇」場合,就是程序運行時從編譯時已經設定的固定數目的「選擇」中做出決定。
枚舉類型(也稱為枚舉)為定義一組可以賦給變數的命名整數常量提供了一種有效的方法。例如,假設您必須定義一個變數,該變數的值表示一周中的一天。該變數只能存儲七個有意義的值。若要定義這些值,可以使用枚舉類型。枚舉類型是使用 enum 關鍵字聲明的。
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
默認情況下,枚舉中每個元素的基礎類型是 int。可以使用冒號指定另一種整數值類型。
如果不為枚舉數列表中的元素指定值,則它們的值將以 1 為增量自動遞增。在前面的示例中,Days.Sunday 的值為 0,Days.Monday 的值為 1,依此類推。創建新的 Days 對象時,如果不顯式為其賦值,則它將具有默認值 Days.Sunday (0)。創建枚舉時,應選擇最合理的默認值並賦給它一個零值。這便使得只要在創建枚舉時未為其顯式賦值,則所創建的全部枚舉都將具有該默認值。枚舉中大小寫敏感,但是建議不要這樣。
注意:System.Enum 類型是所有枚舉類型的抽象基類(它是一種與枚舉類型的基礎類型不同的獨特類型),並且從 System.Enum 繼承的成員在任何枚舉類型中都可用。存在從任何枚舉類型到System.Enum 的裝箱轉換,並且存在從 System.Enum 到任何枚舉類型的取消裝箱轉換。System.Enum 本身不是枚舉類型。相反,它是一個類類型,所有枚舉類型都是從它派生的。類型 System.Enum 從類型 System.ValueType派生,而後者又從類型 object 派生。在運行時,類型 System.Enum 的值可以是 null 或是對任何枚舉類型的裝了箱的值的引用。
枚舉的優點:
1、枚舉可以使代碼更易於維護,有助於確保給變數指定合法的、期望的值。
2、枚舉使代碼更清晰,允許用描述性的名稱表示整數值,而不是用含義模糊的數來表示。
3、枚舉使代碼更易於鍵入。在給枚舉類型的實例賦值時,VS.NET IDE會通過IntelliSense彈出一個包含可接受值的列表框,減少了按鍵次數,並能夠讓我們回憶起可能的值

H. C++中枚舉類型與java中枚舉類型有什麼區別

在java裡面,枚舉類型最終被編譯成public static final class類型。
在c++中,枚舉類型就是一種數據結構。

I. C++枚舉類型

函數本身是要求返回枚舉類型的,怎麼能返回string呢?這一般會報錯的,也許某些編譯器不會,但至於返回什麼,就看那個不報錯的編譯器怎麼處理了。如果是返回枚舉類型,那他不是返回一個完整的字元串,而只是返回你定義的枚舉類型中那個字元串的值。

熱點內容
sqlwhencasethen 發布:2024-05-05 23:27:51 瀏覽:641
模架編程軟體 發布:2024-05-05 23:26:54 瀏覽:482
存儲過程異常 發布:2024-05-05 23:24:03 瀏覽:398
winxp訪問不了win7 發布:2024-05-05 23:05:23 瀏覽:734
演算法牛 發布:2024-05-05 22:43:40 瀏覽:720
grublinux引導 發布:2024-05-05 22:37:56 瀏覽:216
unix高級編程第三版pdf 發布:2024-05-05 22:32:09 瀏覽:959
手機wap網站源碼 發布:2024-05-05 22:27:44 瀏覽:260
python修改文件某一行 發布:2024-05-05 22:18:22 瀏覽:457
md5加密64 發布:2024-05-05 21:59:30 瀏覽:527