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

C#实现无论类型如何始终返回Nullable的泛型方法

需求与实现

需要创建一个泛型方法,当条件不满足时返回可空的null值,同时支持用非可空值类型(如DateTime、int)和引用类型调用。

调用示例

var r1 = await cache.GetStr<DateTime>("a");
if(r1 is null) Console.WriteLine("SUCCESS");

var r2 = await cache.GetStr<int>("a");
if(r2 is null) Console.WriteLine("SUCCESS");

var r3 = await cache.GetStr<MyClass>("a");
if(r3 is null) Console.WriteLine("SUCCESS");

实现代码

public async Task<T?> GetStr<T>(string key)
{
    var res = await Db.StringGetAsync(key);
    return res.IsNullOrEmpty ? default(T?) : res.ToString().FromJson<T>();
}

关键说明

  • 该实现依赖C# 8.0及以上的可空泛型特性:T?会根据T的类型自动适配——引用类型时代表可空引用类型,值类型时等价于Nullable<T>;
  • default(T?)会返回对应类型的空值:引用类型返回null,值类型返回Nullable<T>的默认空状态;
  • 这样无论传入值类型还是引用类型,都能正常执行null判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:24:59