Sumon562 Ответов: 4

Массивы C# против списка


когда я должен использовать список, а не массив. Неужели оба они дают нам один и тот же результат? Пожалуйста, объясните на примере. Большое спасибо, кто ответит.

4 Ответов

Рейтинг:
1

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Я суммирую некоторые замечательные ответы.

1. См- Array versus List<t>: Когда использовать какой?[^].

Цитата:

На самом деле редко бывает так, что вы захотите использовать массив. Определенно используйте список<t> в любое время, когда вы хотите добавить/удалить данные, так как изменение размера массивов стоит дорого. Если вы знаете, что данные имеют фиксированную длину, и хотите провести микрооптимизацию по какой-то очень конкретной причине (после бенчмаркинга), то массив может быть полезен.

List<t> предлагает гораздо больше функциональности, чем массив (хотя LINQ немного выравнивает его), и почти всегда является правильным выбором. За исключением аргументов params, конечно ;-p

Как счетчик-список<t> является одномерным; где-как у вас есть прямоугольные (и т.д.) массивы, такие как int [,] или string [,,]-но есть и другие способы моделирования таких данных (если вам нужно) в объектной модели.

Смотреть также:

Как/когда отказаться от использования массивов в c#.net-что?[^]
Массивы, какой в этом смысл?[^]
Тем не менее, я очень часто использую массивы в своей работе. protobuf-чистая[^] проект; полностью для производительности:

он делает много битового сдвига, поэтому байт[] в значительной степени необходим для кодирования
Я использую локальный буфер rolling byte[] , который заполняю перед отправкой вниз в базовый поток (и VV); быстрее, чем BufferedStream и т. д
он внутренне использует модель объектов на основе массива (Foo [], а не List<foo>), Так как размер фиксируется после сборки и должен быть очень быстрым
Но это определенно исключение; для общей обработки бизнес-процессов список"t"выигрывает каждый раз.

2. См- arraylist vs List< & gt; В c#[^]
Цитата:
Да, в значительной степени. List<t> - Это универсальный класс. Он поддерживает хранение значений определенного типа без боксирования в объект и распаковки из него. ArrayList просто хранит ссылки на объекты. Как универсальная коллекция, она реализует универсальный интерфейс IEnumerable<t> и может быть легко использована в LINQ (не требуя никакого вызова Cast или OfType).

ArrayList относится к тем временам, когда в C# не было дженериков. Он устарел в пользу списка<t>. Вы не должны использовать ArrayList в новом коде, предназначенном для .NET >= 2.0, Если вам не нужно взаимодействовать со старым API, который его использует.


3. См Руководство по производительности: используйте дженерики, чтобы исключить затраты на бокс, кастинг и виртуальные вызовы[^] чтобы узнать о преимуществе универсального списка над списком массивов, связанном с производительностью.


adriancs

спасибо

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Добро пожаловать :)

Рейтинг:
0

Guirec

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


Рейтинг:
0

Aarti Meswania

Массив вам нужно установить лимит при объявлении & redim, если нужно увеличить лимит после объявления

список типов) нет необходимости давать лимит & легко добавлять & удалять элементы
Итак, когда вы знаете, что предел eements будет исправлен, тогда идите с массивом, иначе идите со списком

для получения более подробной информации посетите сайт...
Производительность массивов по сравнению с Списки[^]

Счастливого Кодирования!
:)


Member 10275841

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

Рейтинг:
0

Mahesh Bailwal

Одним из преимуществ списка перед массивом является то, что список является динамическим по своей природе, где вы можете добавлять/ удалять элементы во время выполнения. Там, где еще массив статичен по своей природе, вам нужно определить длину массива во время разработки, и вы не можете изменить его длину во время выполнения.
Поэтому, если вы знаете количество элементов, которые должны быть сохранены, вы можете перейти к массиву. В противном случае мы можем пойти на список.