|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
||||||||||||||||
Кортежи. Преобразование типов07.07.2022, 23:20. Показов 2651. Ответов 35
Метки нет (Все метки)
Хочу заставить такую конструкцию работать:
Так вот это - (int x, int y) = MyClass.Test(); ругается что мол не может неявно преобразовать тип (object, object) в тип (int, int). Пишет сделайте явное приведение. И вот тут я что то не понял как сделать это. перепробовал кучу вариантов - всё не так. Можно сделать так:
Или такое извращение:
0
|
||||||||||||||||
| 07.07.2022, 23:20 | |
|
Ответы с готовыми решениями:
35
Преобразование типов Преобразование типов данных Преобразование типов в обобщенном методе |
|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
||||||||||
| 11.07.2022, 16:30 [ТС] | ||||||||||
|
И да, ничего криминального не вижу в обсуждаемом примере. В приложении есть данные. Они абстрагированы в конкретном объекте в виде "таблиц" которые представляют собой наборы массивов. Взаимодействие с данными идут через интерфейсы этого объекта. Полноценная база данных не нужна. И сколько не придумывай красивых названий, бизнес логика и прочее - всё это в конечном счёте код.
0
|
||||||||||
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|
| 11.07.2022, 16:50 | |
|
сами придумали велосипед
сами думаете как его решить у вас есть классы всех таблиц базы зачем возвращать кучу каких то кортежей... есть дапер, где указываете на какую модель мапить и мапите передаете в ваш метод селект список нужных полей, собственно как уже у вас и есть и в результате 1 метод для всего правда всеравно придется написать 100 методов на фронте...
0
|
|
|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
|||
| 11.07.2022, 17:32 [ТС] | |||
|
Опять же Linq обеспесивает достаточно примитивные варианты выборок, в то же время как в делегате можно заложить абсолютно любую логику. Например можно сделать дополнительные SELECT, получить массивы данных и организовать логику JOIN, да вообще что угодно. Поэтому просто взять какой нибудь List или Dictionary и использовать Linq - этот вариант не подходит для для обсуждаемого кейса.
0
|
|||
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|||
| 11.07.2022, 17:44 | |||
|
написав заранее 1-2 метода в базе, в который будет приходить массив полей и массив условий дапером мапя на класс таблицы
0
|
|||
|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
|
| 11.07.2022, 17:48 [ТС] | |
|
Но самое главное BD это не массив объектов класса. А массив массивов. Потому как если делать банальный SELECT в таблице без ключей. То это обычный перебор. Если это массив объектов - то этот перебор будет из двух операций - сначала получаем ссылку на объект, потом получаем ссылку на поле объекта.
Если это простой массив например int - то перебор такой последовательной памяти - это вообще одна инструкция процессора. Не удивлюсь что эта инструкция и ещё какое сравнение может делать за этот такт.
0
|
|
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|
| 11.07.2022, 17:54 | |
|
0
|
|
|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
||||
| 11.07.2022, 17:58 [ТС] | ||||
|
Если вы имеете ввиду что пользуетесь какинибудь Entity или ещё каким ORM (коих огромное количество), то пишите конкретно что именно. И по поводу ORM - все они не волшебным способом мапят объекты на таблицы. И часто внутри себя такого наделают, что потом долго удивляешься что простейший запрос выполняется чёрти знает сколько. И тут нету спора преимущества или недостатка той или иной ORM. И использовать её или нет. Я чётко написал - модель работы подразумевается как работа с таблицами, а не объектами. Добавлено через 1 минуту Я не знаю зачем мне ключи. И я не знаю зачем я делаю B-дерево. Я не знаю зачем я постоянно запускаю таймеры в программе что бы измерить сколько миллесекунд занимают тестовые запросы на простейших SELECT которые тупо перебирают, и играюсь с размерами массивов и другими параметрами что бы уменьшить время. Флаг вам в руки в выборке в таблице на гигабайты и запросов этак 1000 в секунду.
0
|
||||
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
||||
| 11.07.2022, 18:10 | ||||
|
у вас есть таблица в базе, что бы ее представь коду надо замапить эту таблицу на классы как вы это делать будете дело десятое классы должны соответствовать таблицам потом про б деревья задвигают...хоспаде...
0
|
||||
|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
||||
| 11.07.2022, 18:27 [ТС] | ||||
|
А по поводу внешних ключей, я их использую на постоянке везде. Можно и не использовать - тогда сам ручками проверяй, а есть ли например клиент с номером 10. Вот только зачем это делать каждый раз вручную - если это можно заложить непосредственно в код БД. Добавлено через 4 минуты А как например работать программе написанной на С с базой данных? Она ведь ни о каких классах и в помине не знает.
0
|
||||
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|||
| 11.07.2022, 18:34 | |||
|
Добавлено через 1 минуту вам сюда https://www.cyberforum.ru/c/
0
|
|||
|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
||
| 11.07.2022, 18:39 [ТС] | ||
|
Знаете почему я пишу эту переписку, я надеялся что я встречу кой то рабочий вариант. Мол вот этот код лучше, по тому то и потому. Нихрена я не встретил. Как всегда. Только завуалированные абстракции - за которыми так удобно прятать свою не компетенцию, или банально лень. Всё скатилось в типичный срач. P.S. отдаю вам последнее слово.
0
|
||
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|||||||
| 11.07.2022, 19:05 | |||||||
все решение... впрочем какая у вас база мне не известно, на прогрессе это делается все быстро
1
|
|||||||
|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
|||||||||||||||||||||
| 12.07.2022, 23:17 [ТС] | |||||||||||||||||||||
|
Усовершенствовал. Выкинул в Where передачу имён колонок. Теперь имена берутся из параметров делегата. Теперь выглядит так:
Были эксперименты что бы сделать так:
Удалить передачу типов в Select - тоже никак не получается. Потому как если не передавать типы, при помощи которых можно произвести деконструкцию, то надо будет городить out параметры. Что по размером и простоте выглядит хуже. Вместо имени таблицы можно передовать тип класса таблицы. Но тут нету никакого выигрыша что по размеру когда, что по быстроте, с передачей просто стринга. И да глянул что мне тут токсичный товарищ предложил. Наконец не пустые слова, а код. Посмотрел я на это, мда. А пыжился то как. Тут куда не посмотри сплошной оверхед. Я уже не говорю про json сериализацию, это какой то абсурд в высоко нагруженном приложении. Хрен с ней. Пусть будут имена таблиц. Но как минимум надо эту строку распарсить. Выделить какие параметры на вход, на выход. Короче куча кода и времени. При таком подходе лишаемся возможности найти ошибки типов на стадии компиляции. Опять же возвращение целого класса, вместо конкретных параметров. А если нужно сделать 1000000 селектов в секунду, сколько мусорных данных придётся резервировать в куче. Что бы сборщик потом захлёбывался. А сам маппер. Ему что бы сопоставить со свойствами класса - придётся использовать рефлексию, которая убъёт всю производительность. Неудивительно что современные проги написанные таким бездумным подходом требуют гигабайты и гигагерцы. Короче - кроме как вопрос про кортежи я и не собирался обсуждать. Так что всякие любители подоказывать не относящиеся к этой теме вопросы могут сразу валить в другие темы.
0
|
|||||||||||||||||||||
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|
| 12.07.2022, 23:55 | |
|
я очень рад за вас
![]() видите, сами справились
0
|
|
|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
||||||
| 13.07.2022, 16:43 [ТС] | ||||||
|
Нашёл способ получить уникальный идентификатор делегата:
Ещё удалось увеличить скорость работы. При этом SELECT остался такой же лаконичный. Добавлено через 42 минуты Хотя поспешил. Выходные параметры могут быть разными, а where может быть 1. Всё это решается конечно если всё запихнуть в 1 функцию - но тогда красивый select превращается в... некрасивый короче. Буду думать дальше.
0
|
||||||
|
2 / 2 / 1
Регистрация: 12.06.2022
Сообщений: 44
|
||||||
| 14.07.2022, 02:26 [ТС] | ||||||
|
Сделал жёсткую привязку таблицы и выходных параметров к делегату через атрибуты.
0
|
||||||
| 14.07.2022, 02:26 | |
|
Преобразование типов - большая нагрузка на ЦП Взаимное преобразование численных типов данных Преобразование типов: что лучше использовать
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|