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

Инициализировать словарь при объявлении с помощью PowerShell

Учитывая этот код powershell:

$drivers = New-Object 'System.Collections.Generic.Dictionary[String,String]'
$drivers.Add("nitrous","vx")
$drivers.Add("directx","vd")
$drivers.Add("openGL","vo")

Можно ли инициализировать этот словарь напрямую, не вызывая метод Add. Как .NET позволяет вам делать?

Что-то вроде этого?

$foo = New-Object 'System.Collections.Generic.Dictionary[String,String]'{{"a","Alley"},{"b" "bat"}}

[не знаю, какой тип синтаксиса это будет включать]

4b9b3361

Ответ 1

Нет. Синтаксис инициализации для Dictionary<TKey,TValue> - это синтаксис С#. Powershell имеет собственную поддержку синтаксиса инициализатора для System.Collections.HashTable (@{}):

$drivers = @{"nitrous"="vx"; "directx"="vd"; "openGL"="vo"};

Для [вероятно] почти всех случаев он будет работать так же хорошо, как Dictionary<TKey,TValue>. Если по какой-то причине вам действительно понадобится Dictionary<TKey,TValue>, вы можете сделать функцию, которая принимает HashTable и выполняет итерацию через ключи и значения, чтобы добавить их в новый Dictionary<TKey,TValue>.


Синтаксис инициализатора С# точно не является "прямым". Компилятор генерирует на него вызовы Add().