|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Здравствуйте! Подскажите пожалуйста, как сравнить значения свойств двух классов с разной структурой, но наследуемых один интерфейс? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 08:28 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Заоверрайдить в обоих классах Equals / GetHashCode , в методах при удачной попытке приведения к интерфейсу сравнивать поля из интерфейса/вычислять хэшкод. Проверка на эквивалентность - методом Equals. P.S. Желательно, чтобы поля, участвующие в определении эквивалентности/хэшкода, были неизменяемыми - это в будущем спасет от труднопонимаемых и трудновылавливаемых косяков. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 08:55 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Nechto, Сделайте их наследниками) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 09:08 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Petro123Nechto, Сделайте их наследниками) Не совсем понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 09:15 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Petro123Nechto, Сделайте их наследниками) И что это даст в вопросе сравнения экземпляров? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 09:28 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
наследовать интерфейс от IEqualityComparer<T> https://msdn.microsoft.com/ru-ru/library/ms132151(v=vs.110).aspx и сравнивать с помощью интерфейса ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 09:46 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныPetro123Nechto, Сделайте их наследниками) И что это даст в вопросе сравнения экземпляров?сравнивать не придется. Схожие классы не только интерфейсом делаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 09:50 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Petro123Сон Веры Павловныпропущено... И что это даст в вопросе сравнения экземпляров?сравнивать не придется. Схожие классы не только интерфейсом делаются. С чего же сравнивать не придется, когда автору требуется именно сравнить? И каким боком тут схожесть классов не только интерфейсом? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 09:52 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Ну понятно, что я расширил вопрос ТС ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 09:56 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Petro123Сон Веры Павловны, Ну понятно, что я расширил вопрос ТС Я сильно подозреваю, что направление расширения было понятно только расширившему. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 10:02 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, По ООП в коде выше делают класс Б наследником над классом А или оба класса над абстрактным классом. Профит может быть в полиморфизме. Зы. Ещё у меня там смайлик был. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 10:20 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, 2. Интерфейс чаще применяют для изменения поведения класса. А не данных класса. Но это все условно конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 10:23 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
NechtoЗдравствуйте! Подскажите пожалуйста, как сравнить значения свойств двух классов с разной структурой, но наследуемых один интерфейс? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
(c1 as IA).Equals(c2 as IA) ну и может понадобиться использование IEqualityComparer ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 10:28 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Сделал так, работает. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 10:46 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Nechto, Тормоза проверь на всякий. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 10:56 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Nechto, нафига городить такое для сравнения 2 классов? я бы еще понял, если объекты были упакованы и сравнение происходило где во View, но типы известны и определены, такое сравнение будет работать на порядок, если не на несколько медленнее. я бы такой код в CodeReview не пропустил в продакшн ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 11:01 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Petro123Сон Веры Павловны, По ООП в коде выше делают класс Б наследником над классом А или оба класса над абстрактным классом. Профит может быть в полиморфизме. Зы. Ещё у меня там смайлик был. Petro123Сон Веры Павловны, 2. Интерфейс чаще применяют для изменения поведения класса. А не данных класса. Но это все условно конечно. Это всё замечательно (и про всё это я в курсе), но это всё вообще не имеет никакого отношения к вопросу топикстартера. Может, еще поговорим про LOH? Или про интернирование строк? Так, чисто чтоб вопрос расширить. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 11:05 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
monstrUNechtoЗдравствуйте! Подскажите пожалуйста, как сравнить значения свойств двух классов с разной структурой, но наследуемых один интерфейс? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
(c1 as IA).Equals(c2 as IA) Без переопределенного Equals здесь будет просто проверка равенства ссылок (а они разные). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 11:07 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Ты так и не врубился что интерфейс придумал ТС? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 11:18 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Roman Mejtes, +1 ТС! Колись об исходной постановке. ОРМ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 11:20 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Petro123Roman Mejtes, +1 ТС! Колись об исходной постановке. ОРМ? А что тут делиться. Я пример опубликовал. У меня в программе производится много расчетов, для этого я решил создать тесты. Они используются для проверки, после измененний алгоритма расчета, на рассчитанных ранее данных в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 12:17 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Nechtoтестыпсевдокод тестов. Это если есть желание обсуждать или тормозит твое решение. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 12:22 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
А если так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 12:57 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Супер_ПавА если так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Человек понял что мне надо. Только я не хотел нагружать сущности абстрактными классами. К тому же в некоторых из них абстр классы уже используются. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 15:06 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
NechtoЧеловек понял что мне надо. Только я не хотел нагружать сущности абстрактными классами. К тому же в некоторых из них абстр классы уже используются. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 15:18 |
|
|
start [/forum/topic.php?fid=20&fpage=34&tid=1399506]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 158ms |
0 / 0 |