C#HasValue VS!= null

我的问题可能听起来有点愚蠢,但是每当我面对它的时候,它就会让我感到困惑。 有什么区别:

where value.HasValue 

 where value != null 

HasValue检查value是否为空?

他们都做同样的事情,只是select一个,坚持下去,以保持一致性。 最终使用也没有任何好处。