You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何实现将int转换为任意底层类型的泛型Enum类型

泛型枚举转换方法优化方案

你原有的实现仅支持底层类型为Int32的枚举类型转换,原因是int装箱后无法直接拆箱为其他底层类型的枚举实例。无需考虑类型收窄、拓宽溢出的场景下,直接调用.NET内置的Enum.ToObject方法即可实现全类型枚举适配:

调整后代码

public T Cast<T>(int i) where T : Enum
{
    return (T)Enum.ToObject(typeof(T), i);
}

实现说明

  • Enum.ToObject是.NET提供的原生枚举转换方法,会自动将输入的int值转换为目标枚举对应底层类型的数值,再封装为目标枚举实例
  • 自动兼容所有合法的枚举底层类型:sbyte、byte、short、ushort、int、uint、long、ulong,无需手动做类型判断和转换
  • 无需额外处理逻辑即可满足你的需求

若后续需要补充溢出校验逻辑,可通过Enum.GetUnderlyingType(typeof(T))获取目标枚举的底层类型,提前校验输入int值是否在该类型的取值范围内即可。

内容的提问来源于stack exchange,提问作者XWX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:18:03