Подтвердить что ты не робот

Усиливают ли массивы в .NET?

Для каждой ситуации, которая требует использования массива... есть потрясающая коллекция с преимуществами. Есть ли какой-либо конкретный вариант использования для массивов в .NET?

4b9b3361

Ответ 1

Прибытие/получение данных определенной длины приходит на ум, т.е. Последовательный порт, веб-запрос, запрос FTP. В основном это работает на более низком уровне в системе. Кроме того, большинство коллекций используют массив для хранения (примечательное исключение: LinkedList<T>). Коллекции - это еще один слой абстракции.

Ответ 2

Массивы полезны, потому что они всегда линейны в памяти и работают быстро. Например, я могу взять byte[] и маршал непосредственно в структуру без каких-либо проблем, но List<T> нужно было бы сначала преобразовать в массив, насколько я знаю.

Ответ 3

Да, конечно, все равно используется для массивов. Некоторым методам все еще нужны массивы.

Например:

string[] items = "a,b;c:d".Split(new char[]{',',';',':'});

Это еще самый простой способ сохранить кучу элементов и выбор номер один, пока вам не понадобится определенная функция, например, динамический рост.

Ответ 4

Нет, они по-прежнему используют их и всегда должны быть рассмотрены.

Помните, что массивы - это очень простые представления фиксированной длины, поэтому они очень быстры, и большинство языков понимают их в зависимости от типа, используемого в массиве.

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

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

Это нравится вождение 4x4, потому что вы думаете, что в один прекрасный день вам, возможно, придется уходить с дороги, хотя есть 99,9% шансов, что вы будете на обычных дорогах. Массив будет основным автомобилем, а List, например, будет 4x4... он делает все остальное, что может сделать автомобиль (под капотом могут использоваться большинство тех же частей), но за счет газа, стоимость, может не быть вписываются в определенные парковочные места и т.д.

Массивы = производительность и совместимость

Списки (или другие представления) = простота использования при стоимости и совместимости

Ответ 5

Есть ли утерянные (некоторые) значения массивов?

Да. Для многих задач, требующих "таблицы" элементов, теперь есть более гибкие и полезные решения, такие как List<> и IEnumerable<>.

Усиливают ли массивы свою значимость?

Нет. Они являются самой быстрой формой хранения, и они используются "под капотом" в большинстве классов коллекции, System.String и т.д.

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

Ответ 6

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

Ответ 7

Да? В любое время, когда у меня есть тип, который внутренне поддерживает коллекцию элементов фиксированного размера, я использую массив, поскольку он наиболее быстрый для итерации и требует наименьшей памяти. Нет смысла использовать List<T>, Queue<T> и т.д., Если вам не нужны эти функции.

Ответ 8

Два случая, когда я ежедневно работаю с массивами:

  • Анализ изображений. Изображения почти всегда байт [] или int [] массивы.
  • Внешняя аппаратная связь. Большинство устройств требуют идеально структурированных массивов для отправки/получения сообщений.

Ответ 9

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

Ответ 10

Нет, массив не потеряет своей значимости.

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

2- В Graph theroy, все еще сохраняя информацию о связи между вершиной, вы можете внедрить с использованием массивов, которые быстрее, чем реализация LinkList.

3 Некоторые методы, такие как string.split, возвращают массив.

вы можете использовать этот замечательный статический placeholder элементов в истинности компьютерных проблем

Ответ 11

Я использую массивы для манипулирования изображениями, например, в классе WritableBitmap.

Ответ 12

Одна вещь, которую я должен сказать вам, Массивы - это строительные блоки для любого языка программирования. Если вы хотите объявить хранилище, имеющее более одного элемента, для вас основным вариантом является Массивы.

Скажите, например, список.

Если вы видите определение List, оно фактически содержит

T [] items

Просто используйте Reflector и найдите определение List, вы будете удивлены, узнав, что List на самом деле является массивом. В .NET большая часть коллекции, отличной от LinkedList, в основном представляет собой реализацию массива. Они использовали Array из-за быстрого хранения и поиска.

Я согласен с тем, что у Array есть ограничение Update или Remove, если ваш основной упор в хранилище, чем скорость, вы можете пойти в Linked List.

Ответ 13

Как вы думаете, поле подложки за многие из этих причудливых коллекций?