Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Redactionele notitie
Belangrijk
De Windows PowerShell Language Specification 3.0 is gepubliceerd in december 2012 en is gebaseerd op Windows PowerShell 3.0. Deze specificatie geeft niet de huidige status van PowerShell weer. Er is geen plan om deze documentatie bij te werken om de huidige status weer te geven. Deze documentatie wordt hier gepresenteerd voor historische naslaginformatie.
Het specificatiedocument is beschikbaar als een Microsoft Word-document in het Microsoft Downloadcentrum op: https://www.microsoft.com/download/details.aspx?id=36389 Dat Word-document hier is geconverteerd voor presentatie in Microsoft Learn. Tijdens de conversie zijn enkele redactionele wijzigingen aangebracht om opmaak voor het Docs-platform mogelijk te maken. Sommige typfouten en kleine fouten zijn gecorrigeerd.
Syntaxis:
Tip
De ~opt~ notatie in de syntaxisdefinities geeft aan dat de lexicale entiteit optioneel is in de syntaxis.
hash-literal-expression:
@{ new-lines~opt~ hash-literal-body~opt~ new-lines~opt~ }
hash-literal-body:
hash-entry
hash-literal-body statement-terminators hash-entry
hash-entry:
key-expression = new-lines~opt~ statement
key-expression:
simple-name
unary-expression
statement-terminator:
;
new-line-character
10.1 Inleiding
Het type Hashtable vertegenwoordigt een verzameling van sleutel-waardepaar objecten die ondersteuning bieden voor het efficiënt ophalen van een waarde wanneer deze wordt geïndexeerd door de sleutel. Elk sleutel-/waardepaar is een element, dat is opgeslagen in een door de implementatie gedefinieerd objecttype.
De sleutel van een element kan niet de null-waarde zijn. Er gelden geen beperkingen voor het type sleutel of waarde. Dubbele sleutels worden niet ondersteund.
Op basis van een sleutel-waardepaarobject kunnen de sleutel en de bijbehorende waarde worden verkregen met respectievelijk de instantie-eigenschappensleutel en waarde.
Met een of meer sleutels kunnen de bijbehorende waarden worden geopend via de operator Hashtable-subscript [] (§7.1.4.3).
Alle hashtabellen hebben het type Hashtable (§4.3.3).
De volgorde van de sleutels in de verzameling die door Sleutels wordt geretourneerd, is niet opgegeven; het is echter dezelfde volgorde als de bijbehorende waarden in de verzameling die door Waarden worden geretourneerd.
Hier volgen enkele voorbeelden met hashtables:
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.FirstName # designates the key FirstName
$h1["LastName"] # designates the associated value for key LastName
$h1.Keys # gets the collection of keys
Hashtable elementen worden opgeslagen in een object van het type DictionaryEntryen de verzamelingen die door Sleutels en waarden worden geretourneerd, hebben het type ICollection-.
10.2 Hashtable maken
Er wordt een Hashtable gemaakt via een letterlijke hash (§7.1.9) of de cmdlet New-Object. Het kan worden gemaakt met nul of meer elementen. De eigenschap Count retourneert het huidige aantal elementen.
10.3 Hashtable-elementen toevoegen en verwijderen
Een element kan aan een Hashtable worden toegevoegd door (§7.11.1) een waarde toe te wijzen aan een niet-bestaande sleutelnaam of aan een subscript (§7.1.4.3) die een niet-bestaande sleutelnaam gebruikt. Voor het verwijderen van een element is het gebruik van de methode Remove vereist. Bijvoorbeeld
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.Dept = "Finance" # adds element Finance
$h1["Salaried"] = $false # adds element Salaried
$h1.Remove("Salaried") # removes element Salaried
10.4 Hashtablesamenvoeging
Hashtables kunnen worden samengevoegd via de operators + en +=, waardoor beide leiden tot het maken van een nieuwe Hashtable. De bestaande hashtabellen zijn ongewijzigd. Zie §7.7.4 voor meer informatie.
10.5 Hashtables als referentietypen
Aangezien Hashtable een referentietype is, bestaat de toewijzing van een Hashtable uit een ondiepe kopie; dat wil zeggen, de variabele die wordt toegewezen verwijst naar dezelfde Hashtableen er wordt geen kopie van de Hashtable gemaakt. Bijvoorbeeld
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h2 = $h1
$h1.FirstName = "John" # change key's value in $h1
$h2.FirstName # change is reflected in $h2
10.6 Opsommen over een hashtabel
Als u elk paar in een Hashtablewilt verwerken, gebruikt u de eigenschap Keys om de lijst met sleutels als matrix op te halen en vervolgens de elementen van die matrix op te sommen die de bijbehorende waarde ophalen via de eigenschap Waarde of een subscript, als volgt
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123}
foreach ($e in $h1.Keys) {
"Key is " + $e + ", Value is " + $h1[$e]
}