Здравствуйте, Serginio1, Вы писали:
S>угу с null ты получишь ошибку на null
И по крайней мере программа детерминированно упадёт. А с EmptyNode у нас может быть половина узлов в списке фиктивными, и программа будет делать вид, что работает. Вот только все метрики типа длин путей будут фуфельными.
S> и чем (list!=null) лучше
S>S>while (!list.IsEmpty)
S>
Обратный вопрос: чем list.IsEmpty лучше, чем list == null?
S> Есть такая же польза как и у string.Empty. Позволяет работать с методами и свойствами.
Нет никакой пользы. Сосредоточьтесь и постарайтесь писать по делу, а не абстрактную чушь.
S> У него проблема с отложенной инициализацией. Но и в его примере для последнего узла Next будет null
И это должен отловить компилятор!
S> Ограничение может быть не только на Empty, но и по другим свойствам. И вот Empty как раз хорош.
Опять вы пишете что-то бессвязное.
S> Исходная задача это заменить null и добавить проверку на присваивание!
Нет. Исходная задача — это
гарантировать, что при обработке графа никогда не встретится непроинициализированный узел
S> Это можно сделать и добавив свои анализаторы отключив родные.
S> Но в итоге и это не решает проблему ибо null то остается!
Ну так вам об этом и говорят.