Привет, неизвестный путник!

Добро пожаловать в документацию по языку C#.NStar! Здесь вы найдете информацию о его классах и структурах, отличающихся от оригинального C# от Microsoft. [О разнице между классами и структурами читайте здесь.]

BaseDictionary[TKey, TValue, TCertain]
Общий базовый класс для Dictionary[TKey, TValue] и SortedDictionary[TKey, TValue].

BaseHashSet[T, TCertain]
Общий базовый класс для FastDelHashSet[T], ListHashSet[T] и TreeHashSet[T].

BaseIndexable[T]
Самый общий базовый класс с одним внутренним типом (без ссылки-замыкания TCertain). Доступно полное описание.

BaseIndexable[T, TCertain]
Общий базовый класс для BaseList[T, TCertain] и Slice[T]. Доступно полное описание.

BaseList[T, TCertain]
Общий базовый класс для BaseSet[T, TCertain], Buffer[T] и SumList. Доступно полное описание.

BaseSet[T, TCertain]
Общий базовый класс для BaseHashSet[T] и BaseSortedSet[T].

BaseSortedSet[T, TCertain]
Общий базовый класс для SortedSet[T], SumSet[T] и TreeSet[T].

Buffer[T]
Буфер фиксированной емкости, позволяющий добавлять, вставлять в середину и удалять элементы. При добавлении элементов в полный буфер они удаляются из начала.

Chain
Представляет компактную последовательность идущих подряд чисел от a до b. Этот тип является структурой.

Dictionary[TKey, TValue]
Словарь, содержащий пары "ключ-значение" и позволяющий быстро найти значение по ключу. При небольшом количестве элементов использует линейный поиск, при увеличении количества элементов практически полностью эквивалентен словарю от Microsoft.

FastDelHashSet[T]
Хэш-множество, позволяющее искать, добавлять и удалять элементы за Õ(1), а вот на индексацию лучше забить.

GUIWindow
Графическое окно, позволяющее добавлять надписи, кнопки, текстовые поля и другие элементы графического интерфейса пользователя (GUI), а также разнообразные панели для группировки этих элементов.

LimitedQueue[T]
Очередь фиксированной емкости - при добавлении элементов в полную очередь они удаляются из начала.

ListHashSet[T]
Хэш-множество, позволяющее искать и добавлять элементы за Õ(1), с правильной индексацией, но медленным удалением (O(n)).

Mirror[TKey, TValue]
Двунаправленный словарь, в котором ключ может быть значением, а значение - ключом. В отличие от "прямой" реализации через два словаря, хранит только по одной копии ключа и значения (хотя и по два набора корзин, хэш-кодов и значений next).

ParallelHashSet[T]
Хэш-множество, не имеющее аналогов в мире (как минимум, на обоих вариантах C#) благодаря своему конструктору с поражающей воображение скоростью. Так, например, на нашем главном компьютере с 24 потоками оно быстрее хэш-множества от Microsoft в 10 раз! Также позволяет искать, добавлять и удалять элементы за Õ(1), а вот индексацию лучше даже и не пробовать использовать.

Queue[T]
Коллекция, не допускающая произвольной индексации и действующая по принципу FIFO - First In, First Out, что переводится как "первый вошел - первый вышел", как и в реальной очереди, например, в магазинах в Черную пятницу.

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

SortedDictionary[TKey, TValue]
Несмотря на название "SortedDictionary", этот словарь не всегда является отсортированным! При небольшом количестве элементов проверка каждого на равенство ненамного медленнее бинарного поиска, который проверяет не только равенство, но и то, какой элемент "больше", а вставка в конец несравнимо быстрее, чем в середину. Разумеется, в большинстве случаев при использовании словаря пользователю нужен словарь, а не сортировка в чистом виде, поэтому он и получил словарь, а для сортировки в чистом виде есть метод List<T>.Sort(). Название "SortedDictionary", возможно, неудачное, но я не смог придумать лучшего, так как просто "Dictionary" используется другой коллекцией, которая применяется существенно чаще, чем данная, поэтому приоритет в очереди за более простым названием отдается ей. Если кто знает лучшее название для этой коллекции - пишите.

SortedSet[T]
Отсортированное множество, занимающее мало памяти, по которому можно быстро итерироваться подряд (например, циклом for), получать элемент по индексу за O(1), искать индекс элемента за O(logn), зато добавления и удаления лучше избегать - сконструировать один раз и использовать.

Stack[T]
Коллекция, не допускающая произвольной индексации и действующая по принципу LIFO - Last In, First Out, что переводится как "тот, кто вошел последним, выходит первым", как в стопке ящиков, которая заполняется снизу вверх, а освобождается сверху вниз (если, конечно, вы не хотите осуществить операцию "Ы"😊).

SumList
Представляет строго типизированный список целых чисел (типа int), упорядоченных по индексу. Позволяет за O(logn) получить сумму элементов от первого до номер i. Не рекомендуется использовать эту коллекцию вместо обычного списка, так как она занимает много памяти (72 байта на каждое число, в "чистом" виде занимающее 4 байта), причем эта память расположена не подряд, индексация и добавление в конец занимают O(logn), удаление - все равно O(n), а вставка - O(n*logn)!

SumSet[T]
Коллекция, занимающая промежуточное положение между отсортированным множеством и отсортированным словарем: хранит строго типизированные элементы типа T и соответствующие им "значения" типа int, позволяя за O(logn) найти элемент и его "значение" по индексу, индекс по элементу, "значение" по элементу, добавить и удалить элемент, а также найти сумму "значений" элементов от первого до данного, но требует не менее 88 байт на каждый элемент.

TreeHashSet[T]
Хэш-множество с правильной индексацией за O(logn), позволяющее искать и добавлять элементы также за O(logn), удалять за Õ(logn), но с приятным бонусом - если не удалять элементы, асимптотика индексации, поиска и добавления сокращается до Õ(1). Более того, если вы удалили нужное количество элементов, и вам кажется, что следующее удаление будет не скоро, можно заполнить пустые ячейки, и асимптотика индексации, поиска и добавления снова сократится до Õ(1) до следующего удаления.

TreeSet[T]
Отсортированное множество, занимающее много памяти, по которому нельзя быстро итерироваться подряд (например, циклом for), индексация занимает O(logn), зато остальные ключевые операции - поиск, добавление и удаление - также выполняются за O(logn).

Не являются классами или структурами

Следующие конструкции имеют определенные признаки, делающие их похожими на классы или структуры, но они таковыми не являются и перечислены отдельно:

list(n) T
Примитивный тип.

string
Примитивный тип.



Назад к индексу документации