|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|||||||||||
Сравнение двух объектов04.12.2018, 18:01. Показов 23612. Ответов 21
Допустим есть класс квадрат. Он содержит в себе поле "P" -- его периметр к примеру, "S" -- площадь.
0
|
|||||||||||
| 04.12.2018, 18:01 | |
|
Ответы с готовыми решениями:
21
Сравнение двух объектов на эквивалентность Как правильно сделать сравнение двух объектов по нескольким параметрам?
|
|
Модератор
|
||
| 04.12.2018, 18:12 | ||
|
Конкретно для Вашего случая сравнивайте значения полей P и S, если оба значения совпадают, то объекты равны друг другу. Введите, соответствующий, метод в класс.
0
|
||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
||||||||||||
| 04.12.2018, 18:56 [ТС] | ||||||||||||
Если кому интересно:
0
|
||||||||||||
|
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
|
|
| 04.12.2018, 18:57 | |
|
abortion error, Создайте еще один объект Kvadrat p3 = new Kvadrat(2,4); и сравните его с p1 через
p3.Equals(p1)
1
|
|
|
Модератор
|
|||||||
| 04.12.2018, 19:10 | |||||||
Сообщение было отмечено abortion error как решение
РешениеДля сравнения по значениям полей создайте метод с другим названием. Допустим такой вариант
1
|
|||||||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|||||||||||
| 04.12.2018, 19:11 [ТС] | |||||||||||
|
false, собственно как мне и нужно. Работает правильно, но что если нужно проверить не два элемента, а три, допустим это треугольник:
0
|
|||||||||||
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|||||||
| 04.12.2018, 19:13 | |||||||
|
сделать эти объекты структурами и проверять их побитовое равенство:
Там уже надо по "больше-меньше" отдельно сравнивать по площади и отдельно по периметру.
2
|
|||||||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
||
| 04.12.2018, 19:17 [ТС] | ||
|
Коротко, работает, красиво выглядит, практичней. Спасибо
Добавлено через 1 минуту
0
|
||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|||
| 04.12.2018, 20:41 | |||
|
Добавлено через 5 минут Дока:
0
|
|||
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|
| 04.12.2018, 21:32 | |
|
IamRain, Элд Хасп,
в данной теме мы видим типичный ValueObject. Побитового равенства полей для эквивалентности там за глаза хватает. Городить там надо только для компаратора, и то не надо.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||||
| 04.12.2018, 21:57 | ||||
|
Привязка к контролам коллекций - это ObservableCollection (добавление, удаление). Элд Хасп, касательно вашей темы можно ведь просто SelectedClient пробрасывать. И проблем из за разных ссылок не будет. Видимо, при передаче на редактирование из грида идет по ссылке. Добавлено через 11 минут amr-now, Не знал, что у ValueType Object.Equals переопределен:
0
|
||||
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||
| 04.12.2018, 22:00 | ||
|
IamRain, а тут как раз именно пара чисел.
0
|
||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|
| 04.12.2018, 22:03 | |
|
Но блин, все-таки потратить пару минут на реализацию и Equatable и можно не бояться за поведение в Windows Runtime, как никак, это все таки более наглядно (и поэтому, более правильно).
0
|
|
|
Модератор
|
|||
| 04.12.2018, 22:07 | |||
|
Что я хочу сказать, в процессе разбирательства с этой проблемой, выяснилось, что порой FW в каких-то классах, методах для нахождения объектов использует функции Equals и GetHashCode. И если эти функции возвращают одинаковое значение для разных объектов, то можно нарваться на непредсказуемую работу приложения. Добавлено через 2 минуты Так, конечно, не должно быть. Но такое есть. Наверное это баг. Но как выяснилось баг довольно частый. Так как при моём обращении о помощи, первый же ответ был - исправьте Equals и GetHashCode. После исправления стало всё работать нормально. А для сравнения объектов создал метод с другим именем.
0
|
|||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||
| 04.12.2018, 22:18 | ||
![]() Если например, как контрагрумент, взять какое-нибудь сложное веб-приложение, которое с одной стороны имеет БД c людьми (Person), и с другой, какое-нибудь удаленное ElasticSearch хранилище, и нам время от времени надо их как-то сихронизировать. То искать надо будет людей по пасспорту (или ИНН), а не по ссылке, иначе ничего не найдете, даже если данные будут совпадать.
0
|
||
|
Модератор
|
|||
| 04.12.2018, 23:01 | |||
|
Даже в данном случае. Сейчас пока просто класс с int полями. Потом дополнит к его, начнёт View делать на WPF. И чёрт его знает где это стрельнет потом. И будет потом искать..... то, что полгода назад не так переопределил метод сравнения.
0
|
|||
|
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,614
|
|||||||||||||
| 04.12.2018, 23:11 | |||||||||||||
0
|
|||||||||||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||
| 04.12.2018, 23:17 | ||
|
А ваше требование относится только к Equals.
0
|
||
|
1524 / 515 / 126
Регистрация: 09.01.2018
Сообщений: 1,614
|
||
| 05.12.2018, 00:07 | ||
|
0
|
||
| 05.12.2018, 00:07 | |
|
Помогаю со студенческими работами здесь
20
Сравнение объектов в C# Сравнение объектов Сравнение нескольких объектов Сравнение объектов по дате Сравнение объектов одного типа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|