This is because the compiler is smart enough to figure out that >= null will always be false and replaces your expression with a constant value of false.
Check out this example:
using System;
class Example
{
static void Main()
{
int? i = null;
Console.WriteLine(i >= null);
Console.WriteLine(i == null);
}
}
This compiles down to the following code:
class Example
{
private static void Main()
{
int? i = new int?();
Console.WriteLine(false);
Console.WriteLine(!i.HasValue);
}
}