我想创建一个函数,该函数将检查参数的值,如果为null,则应基于参数的类型设置值,否则它应该返回我尝试过的值。
。
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;
}
}
但问题是它总是在其他部分中并返回垃圾值。
任何人都可以告诉我上述功能怎么了。
String.IsNullOrEmpty(obj.ToString())
很少是 true
。我唯一能想到的会生成一个空字符串vi tostring()是另一个空字符串。实际上,除非ToString()
已被覆盖(就像DateTime
和int
这样的本地类型一样,您将获得对象的完全合格名称。
也许你想要
if (obj == default(T))
?
如果您的类型为无效的类型,则在其无效的情况下用某些值替换,并在没有null的情况下返回现有值Alerady是这样做的现有操作员,??
操作员:
int? i = null; //note of course that a non-nullable int cannot be null
int n = i ?? 0; //equals zero
string s = null;
string s2 = s ?? ""; //equals an empty string
string s3 = "hi";
string s4 = s3 ?? ""; //equals "hi"
方便地,如果第一个操作数的类型不可使??
操作员甚至不会编译。