Dlaczego tak
Pola klasy w C# (inaczej niż zmienne lokalne) są automatycznie inicjowane wartościami domyślnymi swojego typu: liczby zerem, typ bool wartością false, a typy referencyjne, takie jak string, wartością null. Dlatego n = 0, porównanie s == null daje True, a b ma wartość False. Odpowiedź z wartością False dla porównania zakłada, że niezainicjowany string to pusty napis "", a nie null.