Почему методы Array.Sort () и Array.IndexOf () являются статическими? - PullRequest
5 голосов
/ 07 октября 2008

Всегда интересовался, почему Array.Sort () и Array.IndexOf () делают методы статическими и похожими ArrayList.Sort () и ArrayList.IndexOf () разработаны как методы-члены. Спасибо за любые идеи.

Ответы [ 2 ]

5 голосов
/ 07 октября 2008

На мой взгляд, класс Array - это, по сути, представление класса массивов фиксированного размера, которые мы объявляем, используя [] в программе (вы можете провести аналогию, например, если int имеет представление класса (структуры) как System.Int32).

Также класс Array не содержит фактически данных массива в каких-либо переменных экземпляра, но предоставляет только статические служебные функции, которые можно использовать для сортировки и поиска в объявленных массивах фиксированного размера.

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

3 голосов
/ 05 января 2009

Класс коллекции, такой как ArrayList, инкапсулирует некоторую внутреннюю память (предположительно, массив, который изменяется по мере необходимости, но это также может быть связанный список или некоторая другая реализация). Методы типа IndexOf и Sort нуждаются в доступе к базовому частному хранилищу, чтобы быть эффективными, поэтому они должны быть установочными методами.

Array, с другой стороны, не инкапсулирован, есть открытый доступ непосредственно к хранилищу. Методы Array.IndexOf и Array.Sort не нуждаются в специальном доступе к данным массива, поэтому они также могут быть статическими методами.

...