I was eating lunch with a friend yesterday and they were complaining about `null` in C#. He stated that `null` was illogical. I decided to test his claims, so I tested some simple logical propositions:

```
Console.WriteLine(null == null); //True
//Console.WriteLine(null == !!null); //BOOM

Console.WriteLine(10 >= null); //False
Console.WriteLine(10 <= null); //False

Console.WriteLine(!(10 >= null)); //True
Console.WriteLine(!(10 <= null)); //True

```

Checking equality seems straightforward and this is what I would expect. The greater/less than statements however are logical contradictions which I find really confusing! Shouldn't these throw? The negation operation throws as you would expect.

If I try to run comparisons (aside from equality) using `null` in Ruby or Python I get a type error along the lines of "cannot compare a number to nil". Why doesn't C# do this?