Why does one often see “null != variable” instead of “variable != null” in C#?

It’s a hold-over from C. In C, if you either use a bad compiler or don’t have warnings turned up high enough, this will compile with no warning whatsoever (and is indeed legal code):

// Probably wrong
if (x = 5)

when you actually probably meant

if (x == 5)

You can work around this in C by doing:

if (5 == x)

A typo here will result in invalid code.

Now, in C# this is all piffle. Unless you’re comparing two Boolean values (which is rare, IME) you can write the more readable code, as an “if” statement requires a Boolean expression to start with, and the type of “x=5” is Int32, not Boolean.

I suggest that if you see this in your colleagues’ code, you educate them in the ways of modern languages, and suggest they write the more natural form in future.

Leave a Comment