这里我收到错误
类型'字符串'必须是不可为空的值类型才能将其用作参数' T1'在泛型类型或方法中' GetDataKeyValue(System.Web.UI.WebControls.GridView,int,string)'
String Process = GetDataKeyValue<String>(gvTargetRate, RowIndex, "Process");
这里我收到错误
类型&#39; T1&#39;必须是不可为空的值类型才能将其用作参数&#39; T&#39;在通用类型或方法中,System.Nullable&#39;
private Nullable<T> GetDataKeyValue<T>(GridView gv, int RowIndex, T column)
{
if (column == null)
return default(T);
return (T)gv.DataKeys[RowIndex].Values[column];
}
答案 0 :(得分:0)
您无法使用任何类型创建Nullable<>
。正如编译器告诉您的那样,您只能对值类型执行此操作。由于该方法不限于任何类型,因此无法确定您是否会将其传递给对象。
实际上,正如this question and its answer中所解释的那样,你想要的是不可能的。
顺便说一句,根据定义,T
不是可空类型,因此default(T)
在值类型的情况下将成为非空值。 string
在对象上,因此如果不使用Nullable<T>
,它就可以为null。
答案 1 :(得分:0)
Nullable类型要求T是不可为空的值类型,例如int或DateTime。像string这样的引用类型已经可以为null。允许像Nullable这样的东西是没有意义的,所以不允许这样做。