Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для AndreA SN
1021 / 125 / 2
Регистрация: 26.08.2011
Сообщений: 1,219
Записей в блоге: 2

Создание и работа в C# с динамическими массивами

25.01.2018, 12:13. Показов 1575. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Работаю с VBA
там есть возможность переопределять размер массива

Например
Visual Basic
1
2
3
4
Dim massiv
Redim massiv(2,0)
...
Redim Preserve massiv(2, Ubound(massiv,2)+1)
То есть я создал массив как переменную типа вариант,
следующей строкой определил размерность массива,
далее переопределил размерность массива с учетом увеличения второй размерности на единичку. Последняя команда используется мной в цикле при появлении данных, которые требуется включить в общий цикл обработки. Понимаю, что это жестоко по отношению к компу, но я в большинстве случаев не знаю какой размер массива заказывать при первичном определении размерности массива.

Вопрос: есть ли такие возможности работы с массивами в C#?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2018, 12:13
Ответы с готовыми решениями:

Работа с динамическими массивами
Можно ли так делать? type TMass = array of Integer; function Funk1(a:TMass):TMass; var c:TMass; i:Integer; begin

Работа с динамическими массивами
Ошибка чтения данных возникает при работе с динамическими массивами: int *mask= new int ; long double **A= new long ...

Работа с динамическими массивами
Создать одномерный динамический массив произ-вольного размера. Ввести значения элементов массива. Выпол-нить задание в соответствии с...

16
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
25.01.2018, 12:30
Увы, согласно документации на MSDN, Redim Preserve не изменяет размер массива, а создает новый с нужным размером и копирует туда данные из старого.
В с# то же самое можно сделать с помощью статической функции Array.Resize.
1
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
25.01.2018, 12:50
Цитата Сообщение от AndreA SN Посмотреть сообщение
Понимаю, что это жестоко по отношению к компу, но я в большинстве случаев не знаю какой размер массива заказывать при первичном определении размерности массива.
используйте обобщенный список))

https://msdn.microsoft.com/en-... .110).aspx
1
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
25.01.2018, 12:51
AndreA SN, Используйте динамические коллекции, например List<T>.
1
 Аватар для AndreA SN
1021 / 125 / 2
Регистрация: 26.08.2011
Сообщений: 1,219
Записей в блоге: 2
25.01.2018, 18:02  [ТС]
А в коллекциях возможно фильтрование данных по признаку/ряду признаков/части признака?
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
25.01.2018, 18:03
Цитата Сообщение от AndreA SN Посмотреть сообщение
А в коллекциях возможно фильтрование данных по признаку/ряду признаков/части признака?
LINQ
1
Фрилансер
 Аватар для FateOri
761 / 458 / 146
Регистрация: 06.01.2017
Сообщений: 4,856
25.01.2018, 18:25
Цитата Сообщение от AndreA SN Посмотреть сообщение
А в коллекциях возможно фильтрование данных по признаку/ряду признаков/части признака?
конечно возможно, но при фильтрах лучше возвращать новую коллецию а не изменять старую

Фильтрация выборки и проекция
1
 Аватар для AndreA SN
1021 / 125 / 2
Регистрация: 26.08.2011
Сообщений: 1,219
Записей в блоге: 2
25.01.2018, 22:49  [ТС]
А скорость выборки из коллекции в 30-50 тысяч строк какая будет? Примерно: миллисекунды, секунды, минуты, годы?

Добавлено через 15 минут
Ребята. чесслово, мне не лень поэкспериментировать. Но хочется знать чего ожидать.
И еще. Я оперирую таблицами примерно 50 столбцов на 50-100 тыс строк при фильтрации. Вот в ключе этого объема как фильтр будет себя чувствовать: красиво или крошево?
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
25.01.2018, 23:38
AndreA SN, ну вот и таблицы появились откуда-то. Что в вашем контексте такое - таблица?

Добавлено через 2 минуты
Цитата Сообщение от FateOri Посмотреть сообщение
при фильтрах лучше возвращать новую коллецию а не изменять старую
это смотря с какой целью производится выборка.
0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
25.01.2018, 23:40
с фильтром всё будет хорошо, в пределах сотен миллисекунд
скорей всего тормоза будут совсем в другом месте, например при выводе в интерфейс - 50к записей это серьезный объем
но может стандартные компоненты и справятся втихаря хитрыми механизмами вроде виртуализации, смотря что/где/как
0
 Аватар для AndreA SN
1021 / 125 / 2
Регистрация: 26.08.2011
Сообщений: 1,219
Записей в блоге: 2
26.01.2018, 13:49  [ТС]
Цитата Сообщение от aquaMakc Посмотреть сообщение
таблицы появились откуда-то
Извиняюсь за недоинформирование. Просто привычка. всю жЫзнь работаю с таблицами Excel. уже как само собой разумеющееся считаю. Вот и не доглядел.
Действительно речь идет об анализе таблицы, содержащей инфу строкового типа. Причем не по строкам, а всю таблицу разом нужно анализировать. Не стоит иронизировать над килограммами моего моцка, способного "разом постичь 50 тыс строк". На то разработана методика, позволяющая пошагово отфильтровывать нужные данные. Как показывает личный опыт - на анализ 35000 строк нужно от 15 минут до 5 часов в зависимости от детализации проверяемых данных. Всё уже реализовано в VBA. На данный момент меня не устраивает быстродействие. Поэтому рассматриваю вопрос реализации всего комплекса задач в шарпее. Пока собираю инфу, консультируюсь с вами, экспериментирую с маленькими табличками, отсеиваю устаревшие ветки кода VBA. В общем кайфую над хорошо и в полном объеме поставленной задачей.
Во всём этом есть хорошая для вас новость - у меня уже в разы меньше тупых вопросов...
и плохая новость - они есть.
Заранее благодарен за понимание.
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
26.01.2018, 14:01
AndreA SN, а что хранит в себе Ваш массив? и хоть какой пример фильтрации есть? возможно Вам подойдёт что-то на примере HashTable, где данные сортировать/искать будет быстрее, но всё зависит от того что хранить в каком формате и т.д
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
26.01.2018, 14:02
AndreA SN, На мой взгляд - самая долгая процедура будет - загрузка информации из Excel в модель данных. Причём, желательно так, чтобы модель данных оперировала со строками только там, где это действительно строка (имеется в виду тип данных, а не строка таблицы).
После формирования модели - пресловутая коллекция каких-то объектов, академический например:
Таблица ексел "Люди" со столбцами: имя, дата рождения, пол. Каждая запись такой таблицы должна быть преобразована в объект класса Person (любимый учебными заведениями) со свойствами:
C#
1
2
3
4
5
6
7
8
    public class TPerson
    {
        public enum SexTypes { male, female } // никакой толерантности
 
        public String Name { get; set; }
        public DateTime BirthDay { get; set; }
        public SexTypes Sex { get; set; }
    }
В итоге получаем, как вариант List<TPerson> Persons содержащий все записи таблицы. List удобен, если мы хотим с ним динамически работать - добавлять/удалять элементы. Если нам надо просто загрузить из внешнего файла и как-то проанализировать - лучше всё-таки массив TPerson[] Persons.

Бытует мнение, что для работы с данными (аналитика и пр.) лучше использовать функциональные языки типа F#.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
26.01.2018, 14:02
Цитата Сообщение от AndreA SN Посмотреть сообщение
Как показывает личный опыт - на анализ 35000 строк нужно от 15 минут до 5 часов в зависимости от детализации проверяемых данных.
По идеи рефакторинг можно выполнить и в VB. Переписывание чревато новьіми багами.

А вообще, для общего ознакомления
https://metanit.com/sharp/tutorial/4.1.php
https://metanit.com/sharp/tutorial/15.1.php
еще бьі почитал про HashSet<T>
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
26.01.2018, 14:03
Цитата Сообщение от Wolfdp Посмотреть сообщение
По идеи рефакторинг можно выполнить и в VB
У ТСа, как я понял не в VB реализация, а VBA - прямо в екселе.
0
 Аватар для AndreA SN
1021 / 125 / 2
Регистрация: 26.08.2011
Сообщений: 1,219
Записей в блоге: 2
26.01.2018, 21:10  [ТС]
всё верно - прямо в Excel анализ провожу.
Я попробую покопаться.
А для визуализации содержимого массива/коллекции что подходит лучше всего? Нужно по ходу визуализировать 22 столбца тех данных, которые отобраны. в строках это варьирует от 2 до 2000 и более. В среднем 3-20 строк.
Почему задаю этот вопрос здесь - полагаю, визуализация сильно зависит от выбора способа обработки данных
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
26.01.2018, 21:27
Цитата Сообщение от AndreA SN Посмотреть сообщение
полагаю, визуализация сильно зависит от выбора способа обработки данных
Вообще не зависит. Обработка - отдельно, визуализация - отдельно. В правильно написанном приложении вся логика, хранение, расчёты и т.д. никак не зависят от GUI. В него просто при необходимости выводятся результаты и из него программа получает управляющее воздействие. Можете, например, почитать здесь.
Цитата Сообщение от AndreA SN Посмотреть сообщение
А для визуализации содержимого массива/коллекции что подходит лучше всего?
Проще всего визуализировать в виде таблицы. В приложениях WinForms это - DataGridView.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.01.2018, 21:27
Помогаю со студенческими работами здесь

Работа с динамическими массивами
Помогите пожалуйста с программой,это должна быть одна программа.. 1)Как написать процедуру для заполнение двумерного массива случайными...

Работа с динамическими массивами
Здравствуйте. Помогите, пожалуйста, написать программу 1. Использующую потоки cout и cin для ввода/вывода. Программа должна использовать...

Работа с динамическими массивами
Добрый день! Написал программу на си, которая рисует окружность в псевдографике: // Clocks.cpp : Defines the entry point for the...

Работа с динамическими массивами
Динамические массивы

работа с динамическими массивами
Всё что нужно, это рассчитать размерность массива через функцию, но в main я получаю, а если передаю массив в функцию то получаю 1, как...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru