Потому что для того, чтобы иметь нулевое значение, тип должен быть обнуляемым. Это прекрасно работает для ссылочных типов (любой класс, который вы определяете и стандартную библиотеку), и если вы посмотрите, вы увидите, что люди do используют null всякий раз, когда у них есть ссылочный объект без значения
Employee employee = Employees.Find("John Smith");
if(employee == null) throw new Exception("Employee not found");
Проблема возникает при использовании типов value , таких как int, char или float. В отличие от ссылочных типов, которые указывают на блок данных где-то еще в памяти, эти значения хранятся и обрабатываются внутри (нет указателя / ссылки).
Из-за этого по умолчанию типы значений не имеют нулевого значения . В предоставленном вами коде невозможно для parentID быть нулевым (на самом деле я удивлен, что это даже получено вашим компилятором - Visual Studio 2008 и, вероятно, 2005 будут рисовать зеленое подчеркивание и сообщать, что утверждение всегда ложно).
Чтобы int имел нулевое значение, вы должны объявить его как nullable
int? parentID;
Теперь parentID может содержать нулевое значение, потому что теперь это указатель (хорошо "ссылка") на 32-разрядное целое число вместо 32-разрядного целого числа.
Так что, надеюсь, вы понимаете, почему «магические значения» часто используются для представления нулей с помощью базовых типов (типов значений). Это просто большая проблема, и часто большой удар по производительности (посмотрите, что такое бокс / распаковка), чтобы сохранить эти типы значений как ссылку на значение, чтобы они могли быть нулевыми.
Изменить: Для получения дополнительной информации о боксе / распаковке (что вам нужно иметь int == ноль), см. Статью в MSDN :
Бокс и распаковка (Руководство по программированию в C #)
Производительность
По отношению к простым назначениям упаковка и распаковка являются вычислительно дорогостоящими процессами. Когда тип значения упакован, новый объект должен быть выделен и создан. В меньшей степени, бросок, требуемый для распаковки, также дорог в вычислительном отношении. Для получения дополнительной информации см. Производительность.