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