Перечисления C#: Nullable или 'неизвестное' значение?

Это зависит, на какой информации Вам нужно и какие рабочие процессы Вы хотите поддерживать.

Делают Вы хотите быть в состоянии к:

  • знают то, чем информация была там (прежде чем она была удалена)?
  • знают, когда это было удалено?
  • знают, кто удалил его?
  • знают, в какой способности они действовали, когда они удалили ее?
  • быть в состоянии восстановить запись после удаления?
  • быть в состоянии сказать, когда это было восстановлено после удаления?
  • и т.д.

, Если запись была удалена и восстановила после удаления четыре раза, он достаточный для Вас, чтобы знать, что это в настоящее время находится в восстановленном после удаления состоянии, или сделайте Вы хотите быть в состоянии сказать то, что произошло тем временем (включая любые редактирования между последовательными удалениями!)?

62
задан Pooven 4 May 2012 в 13:16
поделиться

3 ответа

Definitely use a nullable value type - that's what they're for. It explicitly states your intention. It also means you can use Enum.IsDefined (or the equivalent from Unconstrained Melody if you want generic type safety) to easily determine whether a particular value is a real value without worrying about the "fake" one too.

62
ответ дан 24 November 2019 в 16:50
поделиться

If it's nullable, you'd get it as a default value, you'd get exceptions if you tried to use it when null (which is a good thing!)

2
ответ дан 24 November 2019 в 16:50
поделиться

Вам просто нужно решить, нужно ли вам значение для представления неизвестных значений или вам нужен способ представить отсутствие какого-либо значения.

В случае необходимости представить неизвестное values, дополнительный член перечисления выглядит хорошим решением.

В случае необходимости представить отсутствие какого-либо значения, сделайте его допускающим значение NULL.

Имейте в виду, что нет ничего плохого в том, чтобы иметь оба «неизвестных» enum-member и само перечисление одновременно допускают значение NULL.

HTH.

7
ответ дан 24 November 2019 в 16:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: