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

C#编译报错CS1503:无法将long?类型转换为long如何解决?

错误产生原因

long? 是C#中的可空值类型,本质为 Nullable<long>,即使你已经通过 ticks != null 判定其有有效值,该变量本身的类型依然是可空类型,无法直接隐式转换为 DateTime 构造函数要求的 long 类型参数,因此编译器抛出CS1503错误。

修复方案

可通过以下任意一种方式修复:

  • 方案一:调用可空类型的Value属性获取实际存储的long值,由于你已经做了非空校验,该操作不会抛出异常
public static void Add(long? ticks)
{
    if (ticks != null)
    {
        new DateTime(ticks.Value);
    }
}
  • 方案二:使用空合并运算符给定默认值,省去单独的非空判断逻辑,示例中null场景默认传0作为ticks参数,你可以根据业务需求调整默认值
public static void Add(long? ticks)
{
    new DateTime(ticks ?? 0);
}
  • 方案三:搭配可空类型的HasValue属性做非空判断,语义和ticks != null完全等价
public static void Add(long? ticks)
{
    if (ticks.HasValue)
    {
        new DateTime(ticks.Value);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 11:48:03