В чем разница между "Length", "Count()" и "Rank" для массива .net?
.net array - разница между "Length", "Count()" и "Rank"
Ответ 1
Length является свойством объекта массива и его использование является наиболее эффективным способом определения количества элементов в массиве (Array.Length в MSDN документация)
Count() - это метод расширения LINQ, который делает то же самое. Он применяется к массивам, потому что массивы являются перечислимыми объектами. Он предпочитал использовать Length, потому что Count(), вероятно, будет дороже (см. этот вопрос для дальнейшего обсуждения и документация MSDN по Count для справки)
Rank - это свойство, которое возвращает количество измерений (совершенно другое). Когда вы объявите массив int[,] myArray = new int[5,10];, он будет равен Rank, но он будет содержать в общей сложности 50 элементов (MSDN в свойстве Rank).
EDIT: благодаря Kornelije Petak для соответствующих ссылок MSDN.
Ответ 2
-
Length: Общее количество элементов в массиве -
LongLength: То же, что иLength, но возвращается какlong(в случае, если он = 2 31) -
Count(): метод расширения LINQ, который также работает с другими типами коллекций -
Rank: количество измерений в массиве (всегда1для векторов). Только в .NET 3.5 +. -
GetLength(),GetLongLength(): Длина определенного размера массива -
GetLowerBound(): начальный индекс определенного измерения массива; всегда0для векторов -
GetUpperBound(): Завершение индекса некоторой размерности массива; всегдаLength - 1для векторов
Интересно, что нет GetLongUpperBound() или GetLongLowerBound()...
Теперь, когда мы находимся в теме, в чем разница между массивом и вектором в .NET?
Массивы против векторов
Векторы - это то, что вы обычно называете массивами "1D" в С#. Однако одномерные массивы на самом деле не относятся к типу типа int[], но они относятся к типу int[*]. С# не поддерживает их напрямую; однако они могут быть созданы с помощью Array.CreateInstance и могут иметь ненулевые нижние границы. Они, однако, немного медленнее, чем векторы, потому что векторы непосредственно поддерживаются в CLR. Поскольку одномерные массивы на самом деле редко используются, С# решил не поддерживать их (хотя они могут использовать их с помощью ключевого слова var из другого модуля, который их объявляет!).
Ответ 3
-
Length- свойство, возвращающее число элементов вArray. -
Count()- это расширение LINQ, которое делает то же самое наIEnumerable. Необязательно, он может принимать предикат как параметр и возвращает количество удовлетворяющих ему элементов. -
Rank- свойство, возвращающее число измерений вArray.
Ответ 4
Length является свойством Array, так как С# 1.x
Count() - это метод расширения IEnumerable<T>, потому что теперь каждый T[] реализует IEnumerable<T> неявно.
Обратите внимание, что для массива Count() обычно намного медленнее, чем Length,, поскольку доступ к свойству Length равен O (1), а Count - для IEnumerable<T>, поэтому программа должна пройти через коллекцию и получить ее счет, то есть O (n).
Rank дает изменения массива.
Ответ 5
Длина - это размер массива
Count() - количество элементов в массиве (from system.linq)
Ранг возвращает число измерений (a [] [] = 2, a [] = 1)
Ответ 6
Ну .Count() для типов IEnumerable, List или ArrayList. Пока Length для Array.
Rank означает количество измерений массива.