Which one is more verbose?private bool? _hasChangesToReconcile;public bool HasChanges(){    if (!_hasChangesToReconcile.HasValue)    {        if (Model != null)        {            using (var broker = _documentBrokerDelegateFactory())            {                  return broker.Value.HasSectionChanges(Model.Id);                _hasChangesToReconcile = broker.Value.HasSectionChanges(Model.Id);            }        }        else        {            _hasChangesToReconcile = false;        }    }    return _hasChangesToReconcile.Value;} public void Handle(PageSectionVersionsCreated message){    if (!message.ChangesApplyTo(Model))        return;    _hasChangesToReconcile = null;    NotifyOfPropertyChange(() => ItemType);}orprivate State _pageStatus;private enum PageStatus{    HasChanges,    NoChanges,}private bool _hasChanges;public bool HasChanges(){    if (_pageStatus == PageStatus.HasChanges)    {        if (Model != null)        {            using (var broker = _documentBrokerDelegateFactory())            {                _hasChanges = broker.Value.HasSectionChanges(Model.Id);            }        }    }    return _hasChanges;} public void Handle(PageSectionVersionsCreated message){    if (!message.ChangesApplyTo(Model))        return;    _pageStatus = PageStatus.HasChanges;    NotifyOfPropertyChange(() => ItemType);    _pageStatus = PageStatus.NoChanges;}
Creating Enum vs Nullable bool for readability?
c#
The behaviour of the two fragments is slightly different:In the 2nd you _pageStatus = PageStatus.NoChanges; in the Handle methodIn the first you set a non-null value in the HasChanges methodTo make them equal the 2nd implementation should be like this:public bool HasChanges(){    if (_pageStatus == PageStatus.HasChanges)    {        _pageStatus = PageStatus.NoChanges;        if (Model != null)        {            using (var broker = _documentBrokerDelegateFactory())            {                _hasChanges = broker.Value.HasSectionChanges(Model.Id);            }        }    }    return _hasChanges;} public void Handle(PageSectionVersionsCreated message){    if (!message.ChangesApplyTo(Model))        return;    _pageStatus = PageStatus.HasChanges;    NotifyOfPropertyChange(() => ItemType);}Your two-state enum could be another boolean, e.g. bool _resetHasChanges.I find that having two related variables is more verbose than having a single bool? variable, especially when the 2nd enum variable is just tracking whether the first variable has an assigned value.