我写了这个微不足道的效用函数:
public static T isNull<T>(T? v, T d)
{
return v == null ? d : v.Value;
}
目的是避免烦人的任务,例如检查成员是否为空,这在读取 linq 记录集时很常见。问题是它抛出了这个错误:
类型“T”必须是不可为空的值类型,才能将其用作泛型类型或方法“System.Nullable<T>”中的参数“T”
这个错误似乎是合法的,无论如何我希望我能做这样的事情:
int? myField = record.myField;
int myValue = isNull(myField, 0);
代替:
int? myField = record.myField;
int myValue = myField == null ? 0 : myField.Value;
我觉得我缺少一些 c# 基础知识。是否存在完成我的任务的方法?