Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
24 / 6 / 3
Регистрация: 06.12.2015
Сообщений: 319

Равенство кортежей

23.12.2017, 03:58. Показов 2989. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Я пишу простенькую консольную игру в качестве семестровой работы.
Файл с проектом прикреплен к сообщению ниже.
Застрял на моменте, когда моего персонажа не может убить Creep. Персонаж и моб реализованы в виде кортежей Tuple<int,int> (кортежи выбраны из тех соображений, чтобы свойства кортежей использовать как координаты элементов двумерного массива). За счет нажатия клавиши двигается и стреляет главный персонаж. Крип сам же двигается рандомно. Так вот в программе есть метод, который проверяет равенство двух кортежей и, по идее, если они равны, т.е. значения их свойств item1 и item2 совпадают, то должен быть вызван метод GameOver(). Но этого почему-то не происходит. Если можно ещё помогите отрефакторить метод ArrayWriter. И выслушаю все замечания и советы по оформлению кода. Задача тестовая, просьба слишком не ругаться, а дать мне конструктивные замечания.
Всем заранее спасибо и с наступающим!
Вложения
Тип файла: rar Lucas.rar (55.5 Кб, 5 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2017, 03:58
Ответы с готовыми решениями:

Нет кортежей
NET 6.1, C# 7.3, но при попытке написать в методе (int, int) tuple = (5, 10); ошибка В чем ошибка?

Сортировка кортежей
Здравствуйте. Есть List&lt;Tuple&lt;string, float&gt;&gt;, содержащий некоторое количество пар кортежей с одинаковыми string, но разными float. Мне...

Список кортежей
Доброго времени суток! Пишу программу обхода в глубину графа на C# Заранее прошу не ругаться на мою тупость) Для начала я создал...

33
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
24.12.2017, 13:19
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
Посмотрите сами: тыц.
а бенчмарки есть?)))
0
Эксперт .NET
 Аватар для Usaga
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,114
24.12.2017, 13:30
FateOri, зачем? Вам код ни о чём не говорит? Особенно сообщение в первой же строчке в методе Equals?
0
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
24.12.2017, 14:06
Цитата Сообщение от Usaga Посмотреть сообщение
FateOri, зачем?
интересно насколько велика разница ес-сно)))

Цитата Сообщение от Usaga Посмотреть сообщение
Вам код ни о чём не говорит? Особенно сообщение в первой же строчке в методе Equals?
та говорит))
Equals is not fast что тут может быть непонятного?)))
0
Эксперт .NET
 Аватар для Usaga
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,114
24.12.2017, 15:45
Цитата Сообщение от FateOri Посмотреть сообщение
интересно насколько велика разница ес-сно)))
Разница есть. Лично я не мерял, но в коде видно, что она есть. Более того: даже если бы эта разница была мала, то легко бы "догналась" тем, что структуры копируются по значению, что даёт оверхед везде и всюду, а не только при сравнении. В общем, применение структур чисто для того, чтобы не писать код сравнения (аж целых двух свойств!) - фигня)
0
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
25.12.2017, 10:32
Цитата Сообщение от Usaga Посмотреть сообщение
Более того: даже если бы эта разница была мала, то легко бы "догналась" тем, что структуры копируются по значению, что даёт оверхед везде и всюду, а не только при сравнении.
это точно)) но зато нет проблем с присваиванием когда не поймешь что не так а только спустя много времени поисков высматриваешь что ссылка то осталась та-же и нужно явно копировать)))
0
Эксперт .NET
 Аватар для Usaga
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,114
25.12.2017, 10:35
FateOri, не уверен, что понял о чём вы.
0
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
25.12.2017, 10:39
Цитата Сообщение от Usaga Посмотреть сообщение
FateOri, не уверен, что понял о чём вы.
об ошибке новичков которые путают присваивание ссылочных и значимых типов))
0
Эксперт .NET
 Аватар для Usaga
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,114
25.12.2017, 10:40
FateOri, ну так значимый тип эту ошибку не решает.
0
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
25.12.2017, 10:42
Цитата Сообщение от Usaga Посмотреть сообщение
FateOri, ну так значимый тип эту ошибку не решает.
а вот теперь я не понял о чем вы))
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.12.2017, 10:42
Вот статья на Хабре, думаю полезным будет
https://habrahabr.ru/post/345376/
1
Эксперт .NET
 Аватар для Usaga
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,114
25.12.2017, 10:46
FateOri, я о том, что так же как и легко забыть, что работаешь с ссылкой, так же и легко забыть, что работаешь с копией объекта. Т.е. тут всё тоже самое, но в профиль (в плане ошибок новичков).
1
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
25.12.2017, 10:49
Цитата Сообщение от Usaga Посмотреть сообщение
FateOri, я о том, что так же как и легко забыть, что работаешь с ссылкой, так же и легко забыть, что работаешь с копией объекта. Т.е. тут всё тоже самое, но в профиль (в плане ошибок новичков).
это точно))

Добавлено через 1 минуту
Цитата Сообщение от Почтальон Посмотреть сообщение
Вот статья на Хабре, думаю полезным будет
https://habrahabr.ru/post/345376/
читаю и не пойму один момент))

Кортежи обладают состоянием, но не поведением, поэтому приведенные выше проблемы к ним не применимы. Но одна проблема с изменчивостью все же остается:
C#
1
2
3
4
5
6
var tpl = (x: 1, y: 2);
var hs = new HashSet<(int x, int y)>();
hs.Add(tpl);
 
tpl.x++;
Console.WriteLine(hs.Contains(tpl)); // false
и где тут проблему увидели?)))
0
Эксперт .NET
 Аватар для Usaga
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,114
25.12.2017, 10:51
Это невероятно хреновая практика - менять объект после того, как поместил его в ассоциативную коллекцию...
2
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
25.12.2017, 10:56
Цитата Сообщение от Usaga Посмотреть сообщение
Это невероятно хреновая практика - менять объект после того, как поместил его в ассоциативную коллекцию...
и я о том же проблема что кто-то додумался менять объект а не то что false вернуло)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.12.2017, 10:56

Как работает сравнение кортежей?
using System; namespace ConsoleApp1 { class Program { static void Main(string args) { ...

Использование кортежей (Tuple) в качестве параметров: Create or new?
Всем привет! Относительно недавно начал изучать азы С#, дойдя до кортежей столкнулся с дилеммой на которую не смог найти вразумительного...

Реализую класс, обрабатывающий информация о графе (которая хранится в виде кортежей)
Информация о системе хранится следующим образом: Пусть имеем список направлений: начальный город, конечный город, расстояние (начальная...

Равенство объектов
Здравствуйте. Есть код: Object a = 1; Object b = 1; if (a == b) { Console.WriteLine(&quot;equal&quot;); }

Проверить на равенство массивы
Помогите, пожалуйста. Надо ввести три отдельных массива и проверить, одинаковые ли они.


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru