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

Где использовать строку [] vs list <string> в С#

String[] - малый вес по сравнению с list<string>. Поэтому, если мне не нужно манипулировать моей коллекцией, следует ли использовать String[] или всегда целесообразно перейти на list<string>?

В случае list<string> нам нужно выполнить нулевую проверку или не требуется?

4b9b3361

Ответ 1

Используйте string[], когда вам нужно работать со статическими массивами: вам не нужно добавлять и удалять элементы → только элементы доступа по индексу. Если вам нужно изменить использование коллекции List<string>. И если вы намерены только прокручивать содержимое и никогда не получать доступ по индексу IEnumerable<string>.

Ответ 2

Если сбор не должен быть изменен, используйте строку [] или даже лучше, IEnumerable<string>. Это указывает на то, что сбор строк должен рассматриваться как набор строк только для чтения.

Использование IEnumerable<string> в вашем API также открывает, чтобы базовая реализация была изменена без нарушения кода клиента. Вы можете легко использовать строковый массив в качестве основной реализации и показать его как IEnumerable<string>. Если реализация на более позднем этапе лучше подходит с использованием списка или другой структуры, вы можете изменить его, если он поддерживает IEnumerable<string>.

Ответ 3

Я бы сказал, что вы подвели итоги.

Если размер вашего списка не изменится, и вам не нужны какие-либо расширенные функции List, такие как сортировка, тогда String [] предпочтительнее, потому что, как вы говорите, это легкий.

Но рассмотрите потенциальные будущие требования - возможно ли, что вы когда-нибудь захотите использовать List для чего-то? Если да, рассмотрите возможность использования List now.

Вам нужно проверить значение null, как в String [], так и в List. Оба типа могут иметь нулевое значение.

Ответ 4

Я бы сказал, что это зависит от того, что вы пытаетесь выполнить. В общем, однако, мое мнение состоит в том, что у вас есть доступ к отличной структуре, которая делает для вас много тяжелой работы, поэтому используйте ее (например, используйте List < > вместо массива).

Посмотрите на участников, которые предлагаются вам классом типа List < > , и вы поймете, что я имею в виду: в дополнение к тому, что вам не нужно беспокоиться о размерах массива и индексах за пределами исключений, List и другие классы ICollection/IList предоставляют вам такие методы, как добавление, удаление, очистка, вставка, поиск и т.д., которые бесконечно полезны. Я также считаю, что

myList.Add (myWidg);

намного лучше читать и поддерживать, чем

myArr [i] = myWidg;

Ответ 5

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

Ответ 6

Я бы определенно проголосовал за List. Помимо различных функций-членов, поддерживаемых списком, он предоставляет концепцию "без элемента". Может быть список, который не имеет элементов, но не может быть массив без элементов. Таким образом, если мы придерживаемся лучших практик, не возвращающих null из функции, тогда мы можем безопасно проверить количество элементов без выполнения нулевой проверки. В случае массива мы должны проверить значение null. Более того, я редко использую цикл для поиска элемента, либо в массиве, либо в списке. LINQ просто делает его аккуратным, и мы можем использовать его с массивом List not. Массив должен быть преобразован в список, чтобы использовать LINQ.