我有一些通用方法
T SomeMethod(Func<T> func){
T result = func();
if (result != null)
{ //.....}
}
Run Code Online (Sandbox Code Playgroud)
如果是班级的话效果很好T。T但是如果是struct我该怎么办?result == default(T)如果是,T我该如何检查struct?
PS 我不想使用约束where T: class或Nullable类型。
如果T编译为 a struct,则与 的比较null将始终计算为false。C# 语言规范的第 7.9.6 节对此进行了介绍
如果类型参数类型 T 的操作数与 null 进行比较,并且 T 的运行时类型是值类型,则比较结果为 false。