cae*_*say 8 c# linq resharper null-check
所以,我在应用程序中做了很多数据库工作 - 我的缓存系统有几个可能的返回值.它可以返回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;
}
Run Code Online (Sandbox Code Playgroud)
问题是,我的编译器告诉我if (obj == default(T))将永远是假的.
这是为什么?
Ree*_*sey 21
既然你有一个"类"约束(where T: class),default(T)是始终等于空.您已经在原始if语句中检查了它,因此第二种情况(obj == default(T))永远不会为真.