|
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 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Супер_Пав, А без интерфейса? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 15:37 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Petro123Супер_Пав, А без интерфейса? что без интерфейса? ТС привел код с интерфейсом же. Все решаемо ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 16:02 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Супер_ПавPetro123Супер_Пав, А без интерфейса? что без интерфейса? ТС привел код с интерфейсом же. Все решаемо Моё имхо, что без интерфейса IA тоже решаемо. Удачи аффтару! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2018, 16:33 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Petro123Супер_Павпропущено... что без интерфейса? ТС привел код с интерфейсом же. Все решаемо Моё имхо, что без интерфейса IA тоже решаемо. Удачи аффтару! Ну вы хотя бы пример привели, как вы предлагаете решить данную задачу. Причем тут удачи? Если вы знаете как это можно оптимизировать, почему не даете примера? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2018, 10:02 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Nechto, Мне уже 2 профи сказали тему не расширять. Интерфейс есть в ТЗ. Извини, желание пропало. Тем более что скорость тебе не важна. Значит работать будут все варианты. Даже: Утилитес.сравнить(А а, Б б) ; ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2018, 10:31 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
Petro123Nechto, Мне уже 2 профи сказали тему не расширять. Интерфейс есть в ТЗ. Извини, желание пропало. Тем более что скорость тебе не важна. Значит работать будут все варианты. Даже: Утилитес.сравнить(А а, Б б) ; :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2018, 10:38 |
|
c# сравнить значения двух классов
|
|||
---|---|---|---|
#18+
NechtoУ меня в программе производится много расчетов, для этого я решил создать тесты. Они используются для проверки, после измененний алгоритма расчета, на рассчитанных ранее данных в БД. Для сравнения объектов в тестах можно использовать готовые штуки - например Compare Net Objects или Fluent Assertions . ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2018, 09:05 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1399506]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 184ms |
0 / 0 |