Хеш таблица и словарь разница

Обновлено: 05.07.2024

Объект Hashtable состоит из контейнеров, содержащих элементы коллекции. Контейнер — это виртуальная подгруппа элементов внутри объекта Hashtable, которая обеспечивает более простой и быстрый поиск и извлечение, чем в большинстве коллекций. Каждый контейнер связан с хэш-кодом, который создается с помощью хэш-функции и основан на ключе элемента.

Универсальный класс HashSet<T> — это неупорядоченная коллекция для хранения уникальных элементов.

Хэш-функция — это алгоритм, возвращающий числовой хэш-код на основе ключа. Ключом является значение какого-либо свойства хранимого объекта. Хэш-функция должна всегда возвращать один и тот же хэш-код для определенного ключа. Возможна ситуация, когда хэш-функция создает один хэш-код для разных ключей. Однако хэш-функция, создающая уникальный хэш-код для каждого уникального ключа, обеспечивает лучшую производительность при извлечении элементов из хэш-таблицы.

Каждый объект, который используется в качестве элемента в Hashtable, должен иметь возможность создать свой хэш-код, используя реализацию метода GetHashCode. Однако хэш-функцию также можно указать для всех элементов в Hashtable, используя конструктор Hashtable, принимающий реализацию IHashCodeProvider в качестве одного из своих параметров.

Когда объект добавляется в Hashtable, он сохраняется в контейнере, который связан с хэш-кодом, соответствующим хэш-коду объекта. При поиске значения в Hashtable создается хэш-код для этого значения, и поиск осуществляется в контейнере, связанном с этим хэш-кодом.

Например, хэш-функция для строки может принимать коды ASCII каждого символа в строке и объединять их для создания хэш-кода. Строка "пикник" будет иметь хэш-код, отличный от хэш-кода строки "корзина", поэтому строки "пикник" и "корзина" будут находиться в разных контейнерах. В то же время строки "приказ" и "каприз" будут иметь одинаковый хэш-код и будут находиться в одном контейнере.

Классы Dictionary<TKey,TValue> и ConcurrentDictionary<TKey,TValue> имеют ту же функциональность, что и класс Hashtable. Объект Dictionary<TKey,TValue> конкретного типа (отличного от Object) обеспечивает лучшую производительность, чем Hashtable для типов значений. Это происходит потому, что элементы Hashtable относятся к типу Object, поэтому при сохранении или извлечении типа значения происходит упаковка или распаковка. Класс ConcurrentDictionary<TKey,TValue> следует использовать в случае, когда к коллекции могут обращаться несколько потоков одновременно.

в большинстве языков программирования, словари предпочтительнее, чем хеш-таблицы. Каковы причины этого?

для чего это стоит, словарь и (концептуально) хэш-таблице.

если вы имели в виду " почему мы используем Dictionary<TKey, TValue> класс вместо Hashtable класса?- тогда ответ прост: Dictionary<TKey, TValue> универсального типа, Hashtable нет. Это означает, что вы получаете тип безопасности с Dictionary<TKey, TValue> , потому что вы не можете вставить в него случайный объект, и вам не нужно отбрасывать значения, которые вы берете.

общий словарь был скопирован из источника Hashtable

Dictionary >> Hashtable отличия:

Dictionary / Hashtable сходство:

  • как внутренне хеш-таблицы == быстрый доступ к данным много-деталя согласно ключу
  • как надо неизменяемые и уникальные ключи
  • ключи обоих нужно иметь GetHashCode() метод
  • ConcurrentDictionary - thread safe (можно безопасно получить доступ из нескольких потоков одновременно)
  • HybridDictionary - оптимизация производительности (для немногих деталей и также для много деталей)
  • OrderedDictionary - значения могут быть доступ через int index (в порядке добавления элементов)
  • SortedDictionary - статьи автоматически сортируются
  • StringDictionary - со строгой типизацией и оптимизирован для строки

, потому что Dictionary является общим классом ( Dictionary<TKey, TValue> ), Так что доступ к его содержимому является типобезопасным (т. е. вам не нужно бросать из Object , а ты Hashtable ).

, Dictionary реализуется как Hashtable внутри, так что технически это работает точно так же.

к вашему сведению: во .Чистая, Hashtable является потокобезопасным для использования несколькими потоками чтения и одним потоком записи, в то время как в Dictionary открытые статические члены являются потокобезопасными, но любые члены экземпляров не гарантируется потокобезопасность.

нам пришлось изменить все наши словари на Hashtable из-за этого.

люди говорят, что словарь-это то же самое, что и хэш-таблица.

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

давайте рассмотрим пример:

HashTable

словарь

словарь:

возвращает/бросает исключение, если мы пытаемся найти ключ, который не существует.

это быстрее, чем хэш-таблица, потому что нет бокса и распаковки.

только общедоступные статические члены являются потокобезопасными.

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

пример: Dictionary<string, string> <NameOfDictionaryVar> = new Dictionary<string, string>();

- Диктивного тип-безопасная реализация Hashtable, Keys и Values строго типизированы.

Hashtable:

он возвращает null, если мы пытаемся найти ключ, который не существует.

Это медленнее, чем словарь, потому что он требует упаковки и распаковки.

все члены в хэш-таблице являются потокобезопасными,

Hashtable не является общим типом,

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

если вы используете Dictionary<MyType, object> и всегда устанавливайте значение null чтобы имитировать тип безопасной хэш-таблицы, вы должны, возможно, рассмотреть вопрос о переключении на HashSet<T> .

класс Hashtable использует метод, называемый rehashing.

Rehashing работает следующим образом: существует набор хэш - функций, H1 . Hn, и при вставке или извлечении элемента из хэш таблица, изначально H1 используется хэш-функция. Если это приводит к столкновение, H2 вместо этого пробуется и далее до Hn при необходимости.

словарь использует метод, называемый сцепление.

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

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

обратите внимание, что MSDN говорит: "класс Dictionary)>) реализован как хэш-таблицы", не " словарь)>) класс реализован как HashTable"

словарь не реализован как хэш-таблица, но он реализован в соответствии с концепцией хэш-таблицы. Реализация не связана с классом HashTable из-за использования дженериков, хотя внутренне Microsoft могла бы использовать тот же код и заменить символы типа Object с TKey и TValue.

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

класс Dictionary имеет ту же функциональность, что и класс Hashtable. Словарь определенного типа (кроме Object) имеет лучшую производительность, чем Hashtable для типов значений, потому что элементы Hashtable имеют тип Object и, следовательно, бокс и распаковка обычно происходят при сохранении или получении типа значения.

HashTable:

ключ / значение будет преобразован в тип объекта (бокса) при хранении в куче.

ключ / значение необходимо преобразовать в нужный тип при чтении из кучи.

эти операции очень дорогостоящие. Нам нужно избегать бокса / распаковки как можно больше.

словарь : общий вариант HashTable.

нет бокс/распаковка. Преобразование не требуется.

еще одно отличие, которое я могу понять:

мы не можем использовать словарь (generics) с веб-службами. Причина в том, что стандарт веб-службы не поддерживает стандарт generics.

Dictionary<> является общим типом,и поэтому он безопасен.

вы можете вставить любой тип значения в HashTable, и это иногда может вызвать исключение. Но!--1--> будет принимать только целочисленные значения, а так же Dictionary<string> принимает только строки.

Итак, лучше использовать Dictionary<> вместо HashTable .

другое важное различие заключается в том, что Hashtable является потокобезопасным. Hashtable имеет встроенную множественную безопасность потока читателя/одиночного писателя (MR/SW) которая значит что Hashtable позволяет одному писателю вместе с множественными читателями без фиксировать.

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

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

в чем разница между Array, ArrayList, List, Hashtable, Dictionary, SortedList и SortedDictionary?

какие из них перечислимы (IList -- может делать циклы "foreach")? Какие из них используют пары ключ/значение (IDict)?

Что насчет памяти? Скорость вставки? Скорость извлечения?

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

Я все еще ищу более подробную информацию об использовании памяти и скорости (Big-O notation).

С макушки моей головы:

Array * - представляет собой массив памяти старой школы-своего рода псевдоним для нормального type[] массив. Может перечислить. Не может расти автоматически. Я бы предположил, что очень быстрая вставка и скорость retrival.

List - один из моих favs-может использоваться с дженериками, поэтому вы можете иметь строго типизированный массив, например List<string> . Кроме этого, действует очень похоже ArrayList

Hashtable - простой старый hashtable. O(1) в o (n) в худшем случае. Может перечислять свойства value и keys и делать пары key/val

Dictionary - то же, что и выше, только строго типизировано через дженерики, такие как Dictionary<string, string>

SortedList - сортированный общий список. Замедлился при вставке, так как он должен выяснить, куда положить вещи. Может перечислять., вероятно, то же самое при извлечении, поскольку ему не нужно прибегать, но удаление будет медленнее, чем простой старый список.

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

есть много других структур данных тоже - есть KeyValuePair , который вы можете использовать, чтобы сделать некоторые интересные вещи, есть SortedDictionary что также может быть полезно.

Если это вообще возможно, использовать дженерики. Это включает в себя:

  • список вместо ArrayList
  • словарь вместо HashTable

во-вторых, многие из коллекций являются дубликатами, потому что дженерики были добавлены в версии 2.0 платформы.

Итак, хотя общие коллекции, вероятно, добавляют функции, по большей части:

  • List является общей реализацией ArrayList.
  • словарь является общей реализацией Hashtable

массивы-это коллекция фиксированного размера, который вы может изменить значение, хранящееся в данном индексе.

SortedDictionary-это IDictionary, который сортируется на основе ключей. SortedList-это IDictionary, который сортируется на основе требуемого IComparer.

Итак, реализации IDictionary (поддерживающие KeyValuePairs) являются: * коллекция Hashtable * Словарь * SortedList * Словаре sorteddictionary

кроме того, LinkedList является стандартной реализацией связанного списка (список является списком массивов для более быстрого поиска).

вот несколько общих советов для вас:

можно использовать foreach для типов, реализующих IEnumerable . IList по сути IEnumberable С Count и Item (доступ к элементам с использованием нулевого индекса) свойства. IDictionary С другой стороны означает, что вы можете получить доступ к элементам любой hashable индекса.

Array , ArrayList и List все IList . Dictionary , SortedDictionary и Hashtable выполнить IDictionary .

для временной и пространственной сложности различных операций по этим типам следует ознакомиться с их документацией.

чтобы получить полное представление о структурах данных, обратитесь к таким ресурсам, как среды CLR.

хорошая шпаргалка отметить сложность для структур данных, алгоритмов и т. д.

подробнее о том, почему ArrayList и List на самом деле разные

массивы

как утверждает один пользователь, массивы являются коллекцией" старой школы " (да, массивы считаются коллекцией, но не частью System.Collections ). Но, что такое" старая школа " о массивах по сравнению с другими коллекциями, я.e те, которые вы перечислили в своем названии (здесь, ArrayList и List (of T))? Давайте начнем с основ, посмотрев на Матрицы.

для начала массивы в Microsoft .NET есть "механизмы, которые позволяют обрабатывать несколько [логически связанных] элементов как одну коллекцию" (см. связанную статью). Что это значит? Массивы хранят отдельные элементы (элементы) последовательно, один за другим в памяти с начальным адресом. Используя массив, мы можем легко получить доступ к последовательно хранимым элементам, начинающимся с этого адреса.

помимо этого и вопреки программирования 101 общие концепции, массивы действительно могут быть довольно сложными:

массивы могут быть одномерными, многомерными или jadded (зубчатые массивы стоит прочитать). Сами массивы не являются динамическими: после инициализации массива n размер резервирует достаточно места для хранения n количество объектов. Количество элементов в массиве не может увеличиваться или уменьшаться. Dim _array As Int32() = New Int32(100) резервирует достаточно места в блоке памяти для массива, содержащего примитивный тип 100 Int32 объекты (в этом случае массив инициализируется как содержащий 0s). Адрес этого блока возвращается в _array .

по статье Спецификация Общего Языка (CLS) требует, чтобы все массивы были основаны на нуле. Массивы в .NET поддерживают ненулевые массивы; однако это встречается реже. В результате "общности" нулевых массивов Microsoft потратила много времени оптимизации их производительности; следовательно, один размер, массивы на основе нуля (SZs) являются "специальными"-и действительно лучшей реализацией массива (в отличие от многомерных и т. д.)- потому что СЗС имеют конкретные инструкции языка-посредника для манипулирования ими.

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

опять же, самое большое препятствие для массивов заключается в том, что они не повторно значительные. Они имеют "фиксированную" емкость. Представляем ArrayList и List (of T) в нашу историю:

ArrayList-non-generic list

на ArrayList (вместе с List(Of T) - хотя есть некоторые критические различия, здесь, объясненные позже) - возможно, лучше всего рассматривать как следующее дополнение к коллекциям (в широком смысле). ArrayList наследуется от объекта IList (потомок интерфейса 'ICollection'). Артефакты ArrayList, сами больше - требует больше накладных - чем списки.

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

из моего чтения ArrayLists не может быть зазубренным: "использование многомерные массивы как элементы. не поддерживаемый." Опять же, еще один гвоздь в гроб артефакты ArrayList. ArrayLists также не "типизированы" - это означает, что под всем ArrayList просто динамический массив объектов: Object[] . Это требует много бокса (неявного) и распаковки (явного) при реализации ArrayLists, снова добавляя к их накладным расходам.

необоснованная мысль: кажется, я помню, что читал или слышал от одного из моих профессоров что ArrayLists являются своего рода ублюдочным концептуальным дочерним элементом попытки перехода от массивов к коллекциям типа списка, т. е., Хотя когда-то они были большим улучшением массивов, они больше не являются лучшим вариантом, поскольку дальнейшее развитие было сделано в отношении коллекций

List (of T): каким ArrayList стал (и надеялся стать)

разница в использовании памяти достаточно значительна, чтобы список (Int32) потреблял 56% меньше памяти, чем ArrayList содержащий тот же примитивный тип (8 МБ против 19 МБ в приведенной выше демонстрации: опять же, linked здесь)-хотя это результат, осложненный 64-разрядной машиной. Это различие действительно демонстрирует две вещи: во-первых (1), упакованный "объект" типа Int32 (ArrayList) намного больше, чем чистый примитивный тип Int32 (List); во-вторых (2), разница экспоненциальна в результате внутренней работы 64-разрядной машины.

Итак, в чем разница и что такое Список (Из T)? в MSDN определяет List(Of T) as,". строго типизированный список объектов, к которым можно получить доступ по индексу."Важность здесь -" строго типизированный "бит: список (T) "распознает" типы и сохраняет объекты как их тип. Так, Int32 хранится в виде Int32 , а не Object тип. Это устраняет проблемы, вызванные боксом и распаковкой.

MSDN указывает, что эта разница вступает в игру только при хранении примитивные типы, а не ссылочные типы. кроме того, разница действительно происходит в большом масштабе: более 500 элементов. Что более интересно, так это то, что документация MSDN гласит: "В ваших интересах использовать реализацию класса List(of T) для конкретного типа вместо использования класса ArrayList. "

по сути, List (of T) является ArrayList, но лучше. Это "общий эквивалент" ArrayList. Как и ArrayList, не гарантируется сортировка до сортировки (go рисунок.) List (of T) также имеет некоторые дополнительные функции.

Описывает создание, использование и сортировку хэш-таблиц в PowerShell.

Подробное описание

Хэш-таблица, также называемая словарем или ассоциативным массивом, представляет собой компактную структуру данных, в которой хранится одна или несколько пар "ключ-значение". Например, хэш-таблица может содержать ряд IP-адресов и имен компьютеров, где IP-адреса являются ключами, а имена компьютеров — значениями, и наоборот.

В PowerShell каждая хэш-таблица является объектом Hashtable (System. Collections. Hashtable). В PowerShell можно использовать свойства и методы объектов Hashtable.

Начиная с PowerShell 3,0, можно использовать атрибут [ordered] для создания упорядоченного словаря (System. Collections. специализированные. ордереддиктионари) в PowerShell.

Упорядоченные словари отличаются от хэш-таблиц тем, что ключи всегда отображаются в порядке их перечисления. Порядок ключей в хэш-таблице не определен.

Хэш-таблицы часто используются, так как они очень эффективны для поиска и извлечения данных. Хэш-таблицы можно использовать для хранения списков и создания вычисляемых свойств в PowerShell. И PowerShell имеет командлет, ConvertFrom-StringData , который преобразует строки в хэш-таблицу.

Синтаксис

Синтаксис хэш-таблицы выглядит следующим образом:

Синтаксис упорядоченного словаря выглядит следующим образом:

Атрибут [ordered] появился в PowerShell 3,0.

Создание хэш-таблиц

Чтобы создать хэш-таблицу, следуйте приведенным ниже рекомендациям.

  • Начните хэш-таблицу со знака @ @ .
  • Заключите хэш-таблицу в фигурные скобки ( <> ).
  • Введите одну или несколько пар "ключ-значение" для содержимого хэш-таблицы.
  • Используйте знак равенства ( = ) для отделения каждого ключа от его значения.
  • Используйте точку с запятой ( ; ) или разрыв строки для разделения пар "ключ-значение".
  • Ключи, содержащие пробелы, должны быть заключены в кавычки. Значения должны быть допустимыми выражениями PowerShell. Строки должны быть заключены в кавычки, даже если они не содержат пробелов.
  • Чтобы управлять хэш-таблицей, сохраните ее в переменной.
  • При назначении упорядоченной хэш-таблицы переменной поместите атрибут [ordered] перед @ символом. Если поместить его перед именем переменной, команда завершится ошибкой.

Чтобы создать пустую хэш-таблицу в значении $hash, введите:

При создании хэш-таблицы можно также добавить в нее ключи и значения. Например, следующая инструкция создает хэш-таблицу с тремя ключами.

Создание упорядоченных словарей

Можно создать упорядоченный словарь, добавив объект типа ордереддиктионари , но самым простым способом создания упорядоченного словаря является использование [ordered] атрибута.

[ordered] Атрибут введен в PowerShell 3,0.

Поместите атрибут непосредственно перед символом "@".

Упорядоченные словари можно использовать так же, как и хэш-таблицы. Любой из этих типов можно использовать в качестве значения параметров, которые принимают хэш-таблицу или словарь (iDictionary).

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

Отображение хэш-таблиц

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

Хэш-таблицы имеют свойства "ключи" и "значения". Используйте точечную нотацию для вывода всех ключей или всех значений.

Каждое имя ключа является также свойством хэш-таблицы, а его значением является значение свойства Key-Name. Используйте следующий формат для вывода значений свойств.

Если имя ключа конфликтует с одним из имен свойств типа HashTable, можно использовать PSBase для доступа к этим свойствам. Например, если имя ключа равно и необходимо keys вернуть коллекцию ключей, используйте следующий синтаксис:

Хэш-таблицы имеют свойство Count, которое указывает количество пар "ключ-значение" в хэш-таблице.

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

Добавление и удаление ключей и значений

Чтобы добавить ключи и значения в хэш-таблицу, используйте следующий формат команды:

Например, чтобы добавить в хэш-таблицу ключ "Time" со значением "Now", используйте следующий формат инструкции.

Также можно добавить ключи и значения в хэш-таблицу с помощью метода Add объекта System. Collections. Hashtable. Метод Add имеет следующий синтаксис:

Например, чтобы добавить в хэш-таблицу ключ "Time" со значением "Now", используйте следующий формат инструкции.

Кроме того, можно добавить ключи и значения в хэш-таблицу с помощью оператора сложения ( + ), чтобы добавить хэш-таблицу в существующую хэш-таблицу. Например, следующая инструкция добавляет ключ "Time" со значением "Now" в хэш-таблицу в переменной $hash.

Можно также добавлять значения, хранящиеся в переменных.

Оператор вычитания нельзя использовать для удаления пары "ключ-значение" из хэш-таблицы, но можно использовать метод Remove объекта Hashtable. Метод Remove принимает ключ в качестве значения.

Метод Remove имеет следующий синтаксис:

Например, чтобы удалить пару "время = теперь ключ — значение" из хэш-таблицы в значении переменной $hash, введите:

Вы можете использовать все свойства и методы объектов Hashtable в PowerShell, включая Contains, Clear, Clone и CopyTo. Дополнительные сведения об объектах Hashtable см. в разделе System. Collections. Hashtable.

Типы объектов в хэш-таблицах

Следующая инструкция создает хэш-таблицу строк имени процесса и значения объекта Process и сохраняет их в $p переменной.

Можно отобразить хэш-таблицу в $p и использовать свойства Key-Name для вывода значений.

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

Ключи и значения в хэш-таблице также могут быть объектами Hashtable. Следующая инструкция добавляет пару "ключ-значение" в хэш-таблицу в $p переменной, в которой ключ является строкой, Hash2, а значение — хэш-таблицей с тремя парами "ключ-значение".

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

Сортировка ключей и значений

Элементы в хэш-таблице неупорядочены по отдельности. Пары "ключ-значение" могут отображаться в отдельном порядке при каждом их отображении.

Хотя хэш-таблицу нельзя отсортировать, можно использовать метод GetEnumerator хэш-таблиц для перечисления ключей и значений, а затем использовать командлет Sort-Object для сортировки перечисленных значений для вывода.

Например, следующие команды перечисляют ключи и значения в хэш-таблице в $p переменной, а затем сортируют эти ключи в алфавитном порядке.

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

Создание объектов из хэш-таблиц

Начиная с PowerShell 3,0, можно создать объект из хэш-таблицы свойств и значений свойств.

Синтаксис выглядит следующим образом:

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

Дополнительные сведения см. в разделе about_Object_Creation.

ConvertFrom-StringData

Здесь строки особенно полезны, если значения в хэш-таблице содержат кавычки. Дополнительные сведения о строках см. в разделе about_Quoting_Rules.

Следующая команда создает строку "ключ-значение", а затем сохраняет ее в $string переменной.

Эта команда использует ConvertFrom-StringData командлет для преобразования строки Here в хэш-таблицу.

Читайте также: