如果结构不可为空,则检查 C# 中结构是否为 null

Ale*_*dre 5 .net c# c#-4.0

我有一些通用方法

T SomeMethod(Func<T> func){
   T result = func();
     if (result != null)
       { //.....}
}
Run Code Online (Sandbox Code Playgroud)

如果是班级的话效果很好TT但是如果是struct我该怎么办?result == default(T)如果是,T我该如何检查struct

PS 我不想使用约束where T: classNullable类型。

Jar*_*Par 3

如果T编译为 a struct,则与 的比较null将始终计算为false。C# 语言规范的第 7.9.6 节对此进行了介绍

如果类型参数类型 T 的操作数与 null 进行比较,并且 T 的运行时类型是值类型,则比较结果为 false。