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

C#中如何判断任意类型变量能否转换为int类型?

如何判断对象能否安全转换为int类型?

在使用(int)value进行强制转换时经常会抛出异常,因为value的类型不一定是int。我需要实现这样的逻辑:处理多种类型的值,只要能转换为int就完成转换(比如将Enum转换为对应的int值)。

我尝试过多种预判断方式,但都无效:

  • 检查value as int == null:int不是可空类型,这种写法本身就有问题
  • 检查value is int:Enum虽然可以转换为int,但该判断会返回false,无法满足需求
  • Int32.TryParse():它要求源值必须是字符串类型,不适用当前场景
  • typeof(int).IsAssignableFrom(value.GetType()):执行后返回false,推测是因为Enum转int需要显式转换而非隐式
  • as int?:测试Enum类型时仍然返回null,无法正确识别可转换的情况
  • Convert.ToInt32():无法区分“转换成功得到0”和“转换失败返回0”的两种情况

注:此问题曾被误判为《Better way to cast object to int》的重复问题,但两者需求不同——前者是寻找更优的转换方式,而我需要的是预判断对象能否转换为int,且原问题的解决方案会将Enum解析为名称而非对应的int索引,并不适用。

我自己摸索出了一个可行的方案,通过try-catch来判断是否能安全转换:

bool canCastToInt(object o)
{
    try
    {
        o = (int)o;
    }
    catch (Exception)
    {
        return false;
    }
    return true;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:25:05