Сравнение «сходства» двух значений объекта .net - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть общая процедура сравнения классов C #, которая читает значения из объектов, а затем сравнивает их свойства одно за другим, используя отражение.

            var value1 = property.GetValue(object1, null);
            var value2 = property.GetValue(object2, null);

            if (!value1.Equals(value2))
            { ......

Дело в том, что я получаю различия в некоторых из моих значений float / double, которые незначительны, и я хочу их игнорировать.Каков наилучший способ реализации специального теста для чисел с плавающей запятой / двойных (и, возможно, целых), который сравнивает значения на основе предоставленного числа значащих цифр?

1 Ответ

1 голос
/ 09 декабря 2011

Взгляните на класс EqualityComparer<T>.

Вместо того, чтобы сравнивать объекты описанным способом, вы должны полагаться на метод Equals для рассматриваемого типа, imho.То есть автору класса следует определить, когда 2 экземпляра этого класса равны, переопределив метод Equals (и, возможно, даже реализовав интерфейс IEquality).

...