所以,我在一个应用程序中做了大量的数据库工作——我的缓存系统有几个可能的返回值。它可以返回 null,它可以返回一个默认值(类型)或者它可以返回一个无效对象(无效对象,我的意思是具有不正确的属性/值的对象)。我想创建一个扩展方法来为我进行所有这些检查,如下所示:
public static bool Valid<T> (this T obj) where T: class
{
if (obj == null)
return false;
else if (obj == default(T))
return false;
//Other class checks here
else
return true;
}
问题是,我的编译器告诉我这if (obj == default(T))
将永远是错误的。
这是为什么?