为什么将 Int 转换为无效的枚举值不会抛出异常
在 C# 中,枚举本质上是映射一组命名值的数字类型为整数常量。枚举的一个有趣的方面是它们能够接受任何整数值,包括超出其定义范围的值。
当您遇到如下枚举时:
enum Beer { Bud = 10, Stella = 20, Unknown }
您可能会期望进行强制转换非 10、20 或 Beer 类型未知的整数将引发异常。然而,事实并非如此。将无效整数转换为 Beer 类型会导致将该整数值分配给枚举变量。
考虑以下代码:
int i = 50; var b = (Beer) i; Console.WriteLine(b.ToString());
运行此代码时,它会输出“ 50" 到控制台。 b 变量被赋予整数值 50,这对于 Beer 来说不是有效的枚举值。但是,转换不会引发异常。
此行为源于 .NET Framework 创建者做出的设计决策。枚举由其他值类型支持,例如 int、short 或 byte。因此,它们可以接受对这些基础值类型有效的任何值。
虽然此行为在某些情况下很方便,但如果您没有意识到,它也可能会导致意外结果。
超越默认行为
对于需要更严格执行枚举值的情况,有实用程序和您可以使用扩展来验证和强制仅使用定义的枚举值。这些工具可以帮助您避免潜在的错误并确保您的枚举变量仅包含预期的值。
以上是为什么在 C# 中将无效整数转换为枚举不会引发异常?的详细内容。更多信息请关注PHP中文网其他相关文章!