Qual é o preferido: Nullable <T> .HasValue ou Nullable <T>! = Null?

Eu sempre useiNullable<>.HasValue porque gostei da semântica. No entanto, recentemente eu estava trabalhando na base de código existente de outra pessoa em que eles usavamNullable<> != null exclusivament

Existe um motivo para usar um sobre o outro ou é pura preferênci

int? a;
if (a.HasValue)
    // ...

vs.

int? b;
if (b != null)
    // ...