我想要做类似于这样的事情:
但我现在收到的错误是:
“int?类型必须是引用类型,才能将其用作泛型类型或方法中的参数'T'。”
没错!Nullable 是一个struct!因此,我尝试将类约束更改为struct约束(并且副作用是不能再返回null):
现在开始任务:
给出以下错误:
myYear = record.GetValueOrNull<int?>("myYear"),
请注意可空类型作为泛型参数。
由于GetValueOrNull
函数可能返回null,我的第一次尝试是这样的:
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : class
{
object columnValue = reader[columnName];
if (!(columnValue is DBNull))
{
return (T)columnValue;
}
return null;
}
但我现在收到的错误是:
“int?类型必须是引用类型,才能将其用作泛型类型或方法中的参数'T'。”
没错!Nullable 是一个struct!因此,我尝试将类约束更改为struct约束(并且副作用是不能再返回null):
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
现在开始任务:
myYear = record.GetValueOrNull<int?>("myYear");
给出以下错误:
在泛型类型或方法中,参数'T'必须是非空值类型,而'type int?'却不是
是否可能将可空类型指定为泛型参数?
DbDataRecord
更改为IDataRecord
。 - nawfal