Я реорганизую ряд наших проектов для повторного использования с одним из наших клиентов, и я надеюсь на здравомыслие, чтобы проверить решение переписать один из разработчиков свойств.Является ли условие в этом наборе свойств действительным?
Я видел эту реализацию несколько раз в нашей кодовой базе, но, поскольку она была написана разработчиком, который больше не работает здесь, я не могу спросить его об этом.
Это происходит следующим образом:
private double _myProperty;
public double MyProperty
{
get { return _myProperty; }
set
{
if (!(Math.Abs(_myProperty - value) < double.Epsilon))
{
_myProperty = value;
OnPropertyChanged();
}
}
}
Я хорошо знаком с написанием следующий синтаксис для инкубационных свойств:
if (value != _myProperty)
Но в первом примере выше я интересно, если я отсутствующий что нибудь. Я знаю, что расчет Math.Abs дает мне разницу между «значением» и текущим значением «_myProperty», но почему сравнение с double.Epsilon? Согласно IntelliSense и MSDN, double.Epsilon «представляет наименьшее положительное двойное значение, которое больше нуля». Так что, конечно, сравнение может так же легко быть:
if (Math.Abs(_myProperty - value) > 0)
был предыдущий разработчик просто быть излишне сложным, или мне не хватает какой-то маленький нюанс C# Я еще не покрыты?
Спасибо, я обновлю его, чтобы использовать более подходящее значение для Epsilon – Dmihawk