Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
.NET 3.x

Как правильно сделать сравнение двух объектов по нескольким параметрам?

04.11.2011, 16:08. Показов 3435. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Столкнулся тут с проблемкой - ничего не могу
Сравниваю два объекта по его свойствам. Написал вот такой кодик
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private bool HatchCompare(Hatch reqHatch, Hatch compHatch)
        {
            bool isEquals = false;
            
            if (Hatch)
                if (reqHatch.PatternName.Equals(compHatch.PatternName)) isEquals = true;
                else isEquals = false;
            if (HatchScale)
                if (reqHatch.PatternScale.Equals(compHatch.PatternScale)) isEquals = true;
                else isEquals = false;
 
            return isEquals;
        }
Это для AutoCad, но я объясню:
Hatch - это штриховка. Две штриховки я сравниваю по двум ее свойствам.
if (Hatch) и if (HatchScale) - это два булевых условия. Т.е. если надо их проверять, то далее идет проверка.
В общем - мой вариант нерабочий. Косяк получается, если первое условие не совпадает, а второе совпадает. Т.е. сначала isEquals принимает значение false, а затем true и возвращает true, хотя одно из условий не верно.
Подскажите как правильно написать такую проверку? Особенно если у меня больше 2-ух условий проверки.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2011, 16:08
Ответы с готовыми решениями:

Как произвести сравнение в case по нескольким параметрам
Впринцыпе весь вопрос в названии, как сравнивать case по нескольким параметрам? Добавлено через 5 минут Тема немного изменилась, там...

Как сделать поиск по нескольким параметрам?
Подскажите как правильно задать запрос для поиска записей сразу по нескольким колонкам в таблице? Колонки могут быть разные. Тоесть...

Фильтрация двух связанных списков по нескольким параметрам
Добрый день. Помогите пожалуйста. Есть две коллекции: студенты и секции. Нужно вывести названия секций, которые открылись после 2000го...

5
7 / 7 / 2
Регистрация: 18.10.2011
Сообщений: 40
04.11.2011, 16:23
Я бы добавил для Hatch и HatchScale два разных bool с первоначальным значением true.
Допустим
C#
1
2
3
4
5
6
7
8
9
10
bool isEquals1=true;
bool isEquals2=true;
if (Hatch)
                if (reqHatch.PatternName.Equals(compHatch.PatternName)) isEquals1 = true;
                else isEquals1 = false;
if (HatchScale)
                if (reqHatch.PatternScale.Equals(compHatch.PatternScale)) isEquals2 = true;
                else isEquals2 = false;
if(isEquals1&&isEquals2) isEquals=true;
else isEquals=false;
В чем суть.Мы получим итоговый бул через эти два промежуточных.Если хотя бы один из них false-то isEquals=false.
Мы берем первоначальные значения true,так как в случае, если мы берем всего 1 условие,чтобы второе(которое мы не рассматриваем) было положительное(так как isEquals1&&isEquals2)
0
 Аватар для WonderFlik
208 / 138 / 15
Регистрация: 28.04.2011
Сообщений: 389
04.11.2011, 16:31
не?
C#
1
2
3
4
5
6
7
private bool HatchCompare(Hatch reqHatch, Hatch compHatch)
        {
            bool isEquals = true;
            if (Hatch && !reqHatch.PatternName.Equals(compHatch.PatternName)) isEquals = false;
            if (HatchScale && !reqHatch.PatternScale.Equals(compHatch.PatternScale))  isEquals = false;
            return isEquals;
        }
0
7 / 7 / 2
Регистрация: 18.10.2011
Сообщений: 40
04.11.2011, 16:38
WonderFlik, Если нам не нужно будет проверять один из параметров, ваша программа даст неверное решение
0
5 / 5 / 4
Регистрация: 20.01.2011
Сообщений: 350
04.11.2011, 16:39  [ТС]
Стоило только создать тему и пообщаться с другом в живую (просто обсудить вопрос) как тут же сам нашел верное (вроде) решение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private bool HatchCompare(Hatch reqHatch, Hatch compHatch)
        {
            bool isEquals = false;
            
            if (Hatch)
                if (reqHatch.PatternName.Equals(compHatch.PatternName)) isEquals = true;
                else return false;
            if (HatchScale)
                if (reqHatch.PatternScale.Equals(compHatch.PatternScale)) isEquals = true;
                else return false;
 
            return isEquals;
        }
Все-равное - всем спасибо за помощь!
0
04.11.2011, 16:49

Не по теме:

Overdoser, с чего это вдруг?

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.11.2011, 16:49
Помогаю со студенческими работами здесь

Сделать поиск по нескольким параметрам
всем привет. Такого рода вопрос. Как реализовать поиск по параметрам? На данный момент у меня есть просто поиск, работает. Мне нужно...

Сверка двух таблиц по нескольким параметрам и формирование итоговых результатов
Добрый вечер Может кто подскажет, где я допустил ошибку, но результат такого вычисления получается заведомо не верным Задание: с двух...

Каталог с возможностью поиска по нескольким параметрам - на чем сделать?
Товарищи, посоветуйте на чем сделать (CMS, CMS + какой-либо плагин). Нужен каталог, где каждая единица может иметь несколько различных...

Сравнение двух таблиц по минимальным параметрам
Здравствуйте дорогие форумчане, не могу справится с задачей, а конкретно сравнить две таблицы вбитую вручную и выгруженную с 1с. ...

Сравнение двух столбцов по нескольким критериям
Добрый день. Очень надеюсь на Вашу помощь. Есть два диапазона данных (эти данные могут быть как числовые, так и текстовые). Мне нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru