我想创建一个函数,它将检查参数的值,如果它为空,它应该根据参数的类型设置值,否则它应该只返回值是。
在这里,我已经尝试过。
public static T ConvertNull<T>(T obj)
{
if (String.IsNullOrEmpty(obj.ToString()))
{
HttpContext.Current.Response.Write("COMING IN");
if (typeof(T) == typeof(Int32))
{
return (T)Convert.ChangeType(0, typeof(T));
}
else if (typeof(T) == typeof(DateTime))
{
return (T)Convert.ChangeType(DateTime.Now, typeof(T));
}
else
{
return (T)Convert.ChangeType(String.Empty, typeof(T));
}
}
else
{
HttpContext.Current.Response.Write("ELSE");
return obj;
}
}
但问题是,它总是在那张ELSE段和返回值的垃圾。
有谁能告诉我上面的函数有什么问题。
'Int'和'DateTime'是不可空的。他们不可能*为空。你将一个空字符串转换为任何其他任意类型'T'也是非常不可能成功的。世界上大多数类型都没有实现'IConvertable'。当你调用'ToString'时,任何'null'都会引发异常。 – Servy