У меня есть часы со значениями, написанными ниже, и свойство с аксессорами, написанными ниже.Хотя значения представляют собой строки в штучной упаковке и их типы одинаковы, а фактический текст в строках точно такой же, условие d.Value.Value != d.Value.DefaultValue
равно true
.
Я поставил часы ниже, и я былпросто удивлены их значениями.
internal object DefaultValue { get; set; } = null;
internal object _Value = null;
internal object Value
{
get
{
return _Value;
}
set
{
if (_Value != value)
{
_Value = value;
Changed?.Invoke(this, new SettingValueChangedEventArgs()
{
IsInitialization = FirstChangeIsInitialization
});
}
}
}
Отслеживает значения, когда была достигнута точка останова на _Value != value
:
d.Value.Value != d.Value.DefaultValue
: true d.Value.Value
: "Нет" (объект {строка}) d.Value.DefaultValue
: "Нет" (объект {строка}) "test"
: "тест" (строка) ((object)"test").GetType()
: объект {строка} d.Value.Value.GetType()
: объект {строка} d.Value.DefaultValue.GetType()
: объект {строка} d.Value.DefaultValue.Equals(d.Value.Value)
: правда
Я ожидал, что d.Value.Value != d.Value.DefaultValue
не будет равен d.Value.DefaultValue.Equals(d.Value.Value)
, но они одинаковы.