枚举转换与解析
在枚举、整数和字符串之间进行转换。
枚举转换与解析 是 CoddyKit 上的免费 C# Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 4 节课。
枚举转换为整数
使用 (int) 将枚举强制转换为其基础类型,以获取数值。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
int n = (int)Level.High;
Console.WriteLine(n);
}
}整数转换为枚举
将数字强制转换回枚举类型。该值不一定是已定义的成员,因此请在需要时进行检查。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level l = (Level)2;
Console.WriteLine(l);
}
}使用 IsDefined 验证
Enum.IsDefined 可以确认数字或名称是否对应于实际成员,然后您再使用它。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Console.WriteLine(Enum.IsDefined(typeof(Level), 1));
Console.WriteLine(Enum.IsDefined(typeof(Level), 9));
}
}枚举转换为字符串
ToString 返回成员名称,适合用于显示和日志记录。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Console.WriteLine(Level.Medium.ToString());
}
}从字符串解析
Enum.Parse 会将名称转换回枚举值,但如果名称无效,则会抛出异常。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level l = (Level)Enum.Parse(typeof(Level), "High");
Console.WriteLine(l);
}
}泛型 Parse
泛型形式 Enum.Parse<T> 无需强制转换,代码更简洁易读。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level l = Enum.Parse<Level>("Medium");
Console.WriteLine(l);
}
}使用 TryParse 安全解析
Enum.TryParse 会在成功时返回布尔值,而不是抛出异常,因此处理用户输入时更加安全。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
if (Enum.TryParse<Level>("Low", out var result))
Console.WriteLine("Parsed: " + result);
}
}处理错误输入
解析失败时,TryParse 会返回 false,您可以据此进行适当处理。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
bool ok = Enum.TryParse<Level>("Unknown", out var result);
Console.WriteLine(ok ? result.ToString() : "Invalid input");
}
}不区分大小写的解析
传入 true 可以在解析用户提供的文本时忽略大小写。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level l = Enum.Parse<Level>("high", true);
Console.WriteLine(l);
}
}按名称解析时 TryParse 优于 IsDefined
解析名称时,TryParse 可以在一次调用中同时完成有效性检查和转换。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
string input = "Medium";
if (Enum.TryParse<Level>(input, out var lvl) && Enum.IsDefined(typeof(Level), lvl))
Console.WriteLine("Valid: " + lvl);
}
}往返转换
只要值有效,您就可以将枚举转换为 int 再转换回来,或转换为字符串再转换回来。
using System;
enum Level { Low, Medium, High }
class Program {
static void Main() {
Level start = Level.High;
int num = (int)start;
Level back = (Level)num;
Console.WriteLine(start == back);
}
}快速检查
请测试您对枚举转换和解析的了解。
回顾
使用 (int) 和 (EnumType) 在枚举与其基础整数之间进行强制转换,并使用 Enum.IsDefined 进行验证。ToString 会返回成员名称。
使用 Enum.Parse<T>(会抛出异常)或更安全的 Enum.TryParse<T>(返回布尔值)将名称解析回来,还可以选择不区分大小写。
常见问题解答
「枚举转换与解析」课时是免费的吗?
是的 — 「枚举转换与解析」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 4 节课。
「枚举转换与解析」这节课中我会学到什么?
在枚举、整数和字符串之间进行转换。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C# Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「枚举转换与解析」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C# Academy 课中编写并运行代码吗?
能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 定义和使用枚举
- Flags 枚举与位运算组合
- 枚举转换与解析
- 遍历枚举值