Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14

Сделать, чтобы компилятор выдавал предупреждение, когда можно заменить класс, метод и т. д. на более оптимальные

04.06.2024, 19:00. Показов 3174. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим, пользователь ввел List<int>, но такой тип неоптимален, когда есть NList<int>. Аналогично с Convert и NConvert, когда целевой тип - int. При этом на List<string> предупреждение не должно выдаваться, так как тип NList<string> невозможен. Как это можно сделать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.06.2024, 19:00
Ответы с готовыми решениями:

Сделать, чтобы метод выдавал вычисленные значения в виде массива
Как сделать , чтобы метод выдавал вычисленные значения в виде массива ? Помогите static double Table(double x) { ...

Как сделать так чтобы, когда символ '@' попадает на знак 'X' запускался метод?
Привет всем, если кратко то мне нужно сделать так, когда символ '@' попадает на знак 'X' запускался метод. Долго думал ничего не смог. с# ...

Можно ли как-то сделать, чтобы ноутбук, когда закрывали крышку не вырубался?
Можно ли как-то сделать, чтобы ноутбук, когда закрывали крышку не вырубался?

45
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
07.06.2024, 11:24
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Wolfdp Посмотреть сообщение
Банальное использование List<T> вместо T[] уже может давать те или иные аффекты.
под листом все тот же массив
про какие артефакты может идти речь?
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
07.06.2024, 12:05
Цитата Сообщение от Dr9vik Посмотреть сообщение
про какие артефакты может идти речь?
affect -- оказывать воздействие

Из того с чем сталкивался: всюду на webapi проекте по возможности использовали List<T> и в ус не дули. В определенный момент мне приспичило вернуть json содержащий T[] (причины сейчас тоже не вспомню). Сериализация падала на этом свойстве. Причины -- хз. Сталкивался и в обратную сторону: когда List<T> вызывал ошибки сериализации в json. Оба случая "фиксилось" тем что использовал просто другую коллекцию, и не копал глубже (никто особо на это время бы и не выделил).

Ещё важный момент: речь шла не про прямое взаимодействие с каким-нибудь newtonsoft, а формирование модели для request/response и скармливание его условному sender. Т.е. для разбора пришлось бы основательно так копнуть что где как и почему. Как писал выше -- не всегда есть на это ресурсы.

Да, можно сказать что за несколько лет лишь пару раз стрельнуло это. Но речь об List<T> и T[], которые вроде как должны работать всюду. ТС же предлагает прям целенаправленно всюду использовать кастомное решение. Опуская все эти разборы по поводу насколько его оптимизации оправданы, я стараюсь донести мысль что "стандартное решение = более надежное решение".

Ещё можно докинуть в копилку, что всякие сторонние либы, которые приходится использовать, не всегда на вход принимают обобщение в виде IEnumerble<T>, а вполне могут ожидать List<T>. В итоге будет следующая картина:
- я не могу использовать NList<T>, потому как либа ожидает List<T>
- код изобилует уведомлениями "используй NList<T>". Если это ещё и целый warning, то вообще в топку это решение.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
363 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,829
Записей в блоге: 14
07.06.2024, 13:06  [ТС]
Цитата Сообщение от Wolfdp Посмотреть сообщение
В итоге будет следующая картина:
- я не могу использовать NList<T>, потому как либа ожидает List<T>
- код изобилует уведомлениями "используй NList<T>". Если это ещё и целый warning, то вообще в топку это решение.
Кто мешает использовать new G.List<T>(nList) (предварительно объявив в начале файла using G = System.Collections.Generic;)? G.List<T> не относится к моей библиотеке, поэтому мой анализатор его никак не сможет контролировать. Кроме того, думаю, можно проверять, какой тип ожидается методом. Речь шла о ситуации, когда можно с равной степенью корректности использовать и List<T>, и NList<T>.
0
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
07.06.2024, 14:32
Цитата Сообщение от Wolfdp Посмотреть сообщение
Из того с чем сталкивался: всюду на webapi проекте по возможности использовали List<T> и в ус не дули. В определенный момент мне приспичило вернуть json содержащий T[] (причины сейчас тоже не вспомню). Сериализация падала на этом свойстве. Причины -- хз. Сталкивался и в обратную сторону: когда List<T> вызывал ошибки сериализации в json. Оба случая "фиксилось" тем что использовал просто другую коллекцию, и не копал глубже (никто особо на это время бы и не выделил).
это кривой сериализатор и скорее вы использовали стандартный от масдая который кривой был до 3 кора
темболее какая связь Linq и IQueryable если у вас сериализатор не работал
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
07.06.2024, 15:16
Etyuhibosecyu,
Речь шла о ситуации, когда можно с равной степенью корректности использовать и List<T>, и NList<T>.
Проблема как раз в том что вы хотите автоматически определять когда его можно использовать. Эта задача, на мой взгляд, сопоставима с написанием ии, который сможет существенно рефакторить код .

Dr9vik, перечитайте ещё раз моё первое сообщение. Я задавал два отдельных вопроса: касаемо формирования запросов из linq и касаемо сериализации. И далее их не смешивал, просто вы не вниматель читали мои ответы.

Еще один момент -- вы пытаетесь мне доказать что большинстве случаев дефолтный лист и массив работают. Я это прекрасно понимаю. Эти вопросы и примеры были целью натолкнуть на мысль ТСа, что его реализация не будет работать по причине, что код завязан на использование обычного листа и легкой замены не добиться. А так как проекты нередко имеют цикл сопровождения и развития, то добавляется шанс что сначала вроде заменить и можно, а потом оказывается что лучше бы там был обычный лист.
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,727
07.06.2024, 16:20
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Кто мешает использовать new G.List<T>(nList)
Мешает умножение на нуль всей идеи "оптимизации" от твоей библиотеки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2024, 16:20

Можно ли сделать, чтобы программа заполняла БД в два и более потока?
Добавляю запись в таблицу MySql кодом. (код условный) try { using (MySqlConnection connection = new...

Как сделать чтобы когда форма открыта можно было управлять персонажем?
Подключил к Юнити WindowsFormAplication,все работает,но проблема в том что когда открыта форма не могу управлять персонажем в Юнити.Как...

Нужно сделать, чтобы в Edit можно было вводить не более 3-х символов
Нужно сделать, чтобы в Edit можно было вводить не более 3-х символов

Как сделать чтобы rand() выдавал в массив неповторяющиеся числа?
Короче смысл такой. Программка почти дописана, задача стояла такая: Написать метод /функцию, которая решает задачу простым перебором...

Как сделать так, чтобы код не IP выдавал, а имя компьютера
Вот смотрите... &lt;%=Request.ServerVariables('HTTP_USER_AGENT')%&gt; выдает имя клиентской программы ...


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

Или воспользуйтесь поиском по форуму:
46
Ответ Создать тему
Новые блоги и статьи
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru