如何在 C# 中从枚举 Enum 中获取整型 Int 值
Payel Ganguly
2023年1月30日
2020年9月26日
本教程讲解了如何在 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# 中的一个范围内的随机数
- 在 C# 中将 Int 转换为 Enum
- 如何在 C# 中将字符串转换为整型 Int
- C# 中的整数除法