如何在 C# 中從列舉 Enum 中獲取整型 Int 值
Payel Ganguly
2023年10月12日
本教程講解了如何在 C# 中從 enum
中獲取 int
值,並列舉了一些常見的程式碼示例,以收集 C# 的列舉型別的概況。
Enum
(也稱為 Enumeration
)是一種使用者定義的資料型別或值型別,通常定義了一組底層積分型別的常量命名值。enum
關鍵字在程式碼中定義了一個列舉型別。基本例子如下。
enum Name { Joe, Rick, John, Matt }
預定義常量值的列舉型別預設為資料型別 int
。然而,底層的積分型別可以明確地設定為任何其他積分數字型別,如 sbyte
、byte
、short
、ushort
、int
、uint
、long
和 ulong
。下表描述了 C# 中每個預定義積分型別的大小和範圍。
C# 關鍵字 | 整數大小 | 範圍 |
---|---|---|
sbyte |
8 位有符號型 | [-128, 127] |
byte |
8 位無符號型 | [0, 255] |
short |
16 位有符號型 | [-32,768, 32,767] |
ushort |
16 位無符號型 | [0, 65,535] |
int |
32 位有符號型 | [-2,147,483,648, 2,147,483,647] |
uint |
32 位無符號型 | [0, 4,294,967,295] |
long |
64 位有符號型 | [-9,223,372,036,854,775,808, 9,223,372,036,854,775,807] |
ulong |
64 位無符號型 | [0, 18,446,744,073,709,551,615] |
enum
到 int
型別轉換
從 enum
中獲取 int
值並不像看起來那麼通用,因為挑戰在於資料型別。請看下面的例子。
public enum Days { Numbers = 20, DayType = 3 }
int abc = (int)Days.Numbers;
Console.WriteLine(abc);
輸出:
20
enum
可以有不同的底層型別,這對程式設計師來說可能有點棘手。上面的程式碼將 Days
列舉的 int
值儲存為 abc
。在這種情況下,使用型別轉換方法將實體的資料型別改變為另一種資料型別,確保變數的正確使用。但使用型別轉換總是不可取的。
有一些不依賴於 Typecasting 的方法,而且可以很直接。這些方法將在下面的程式碼示例中詳細解釋。
static
類將 enum
轉換為 int
using System;
class Demo {
public static class Subjects {
public const int maths = 2;
public const int science = 3;
public const int english = 4;
public const int history = 5;
}
public static void Main() {
int xyz = Subjects.science;
Console.WriteLine(xyz);
}
}
輸出:
3
上面的程式碼顯示,Subjects.science
在不考慮輸入正確的整數值的情況下得到了正確的值 3
。
使用 GetTypeCode()
將 enum
轉換為 int
using System;
class Demo {
public enum Subjects { maths, science, english, history }
public static void Main() {
Subjects Maths = Subjects.maths;
Object sub = Convert.GetTypeCode(Maths);
Console.WriteLine(sub);
}
}
輸出:
Int32
如果任何程式設計師不想使用靜態常量,那麼他們可以使用上面的 GetTypeCode()
方法。以上所有的程式碼都成功地從列舉型別中提取了整數。下面的例子將幫助你獲得更多的想法。
更多例子
例 1:
using System;
class Demo {
public enum Positions { Role = 2, Project = 3, Jobs = 4 }
public static void Main() {
int a = (int)Positions.Jobs;
Console.WriteLine(a);
}
}
輸出:
4
例 2:
using System;
class Demo {
public enum Galaxy : long { Sun = 1, S5HVS1 = 2, HD140283 = 2147977653 }
;
public static void Main() {
long solar = (long)Galaxy.HD140283;
Console.WriteLine(solar);
}
}
輸出:
2147977653
相關文章 - Csharp Integer
- C# 中將整形 Int 轉換為字串 String
- C# 中的隨機整數
- 如何在 C# 中將字串轉換為整型 Int
- C# 中的整數除法
- 在 C# 中將布林值轉換為整數
- 在 C# 中將 Int 轉換為十六進位制