Значение по умолчанию класса Version: ноль или (0,0)? - PullRequest
1 голос
/ 29 сентября 2010

мы идентифицируем клиентское программное обеспечение с использованием класса Version и широко используем эти значения, а также храним эти значения в базе данных. Как бы вы сохранили неизвестное значение версии? Мы можем получить неизвестное значение версии, если не смогли успешно запросить версию клиента.

Я спрашиваю, потому что мне нравится Шаблон нулевого объекта , мне не нравятся постоянные проверки на нулевое значение, и я хотел бы, чтобы тип Version был типом значения вместо ссылочного типа. Но Microsoft реализовала тип Version как ссылочный тип. В то же время в .NET v4 добавлен метод TryParse () , который в случае сбоя сохраняет результат в виде (0,0), но не ноль. Если вы вызываете конструктор по умолчанию без указания точного значения версии, вы получите значение (0,0), а внутренние поля будут инициализированы (0, 0, -1, -1). Возможно, Microsoft поняла, что Version должна быть value-type, кто знает:).

Но как лучше всего обращаться с неизвестными значениями версии? Всегда проверять на ноль или использовать конструктор по умолчанию?

Ответы [ 2 ]

3 голосов
/ 29 сентября 2010

Я бы проверил на ноль. Я думаю (0,0) вводит в заблуждение в этом контексте.

2 голосов
/ 29 сентября 2010

Я бы использовал значение по умолчанию (0,0) вместо null.Как вы заявили, вам не придется иметь дело с пустыми проверками (хотя их можно легко решить с помощью объединения нулей), это значение используется платформой в качестве значения по умолчанию (и условия отказа), и я не знаюлюбые ситуации, когда версия (0,0) имеет смысл где угодно.Также у меня сложилось впечатление, что сборки должны всегда иметь номер версии.Так что значение null может быть не всегда доступно, особенно в сборке.Или, по крайней мере, если это значение для вас, вы должны следовать шаблону, используемому платформой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...