10. Hashtabeller
Syntax:
Tips
Notationen ~opt~
i syntaxdefinitionerna anger att den lexikala entiteten är valfri i syntaxen.
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 Introduktion
Typen Hashtable representerar en samling nyckel /värde-parobjekt som stöder effektiv hämtning av ett värde när det indexeras av nyckeln. Varje nyckel/värde-par är ett element som lagras i någon implementeringsdefinierad objekttyp.
Ett elements nyckel får inte vara null-värdet. Det finns inga begränsningar för typen av nyckel eller värde. Dubblettnycklar stöds inte.
Med ett nyckel/värde-parobjekt kan nyckeln och det associerade värdet hämtas med hjälp av instansegenskaperna Nyckel respektive Värde.
Med en eller flera nycklar kan motsvarande värde(er) nås via hashtable-subscript-operatorn []
(·7.1.4.3).
Alla hashtabeller har typen Hashtable
(#4.3.3).
Ordningen på nycklarna i samlingen som returneras av Nycklar är ospecificerad. Det är dock samma ordning som de associerade värdena i samlingen som returneras av Values.
Här följer några exempel som rör hashtabeller:
$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
-element lagras i ett objekt av typen DictionaryEntry, och samlingarna som returneras av Nycklar och Värden har typen ICollection.
10.2 Skapa hash-tabell
En Hashtable
skapas via en hash-literal (7.1.9) eller cmdleten New-Object . Den kan skapas med noll eller flera element. Egenskapen Count returnerar det aktuella elementantalet.
10.3 Lägga till och ta bort hash-tabellelement
Ett element Hashtable
kan läggas till i ett genom att tilldela (7.11.1) ett värde till ett nyckelnamn som inte finns eller till ett uppsänkt namn (7.1.4.3) som använder ett namn som inte finns. Borttagning av ett element kräver att metoden Remove används. Exempel:
$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 Sammanfogning av hash-tabell
Hashtabeller kan sammanfogas via operatorerna +
och +=
, som båda resulterar i skapandet av en ny Hashtable
. De befintliga hash-tabellerna är oförändrade. Mer information finns i 7.7.4 .
10.5 Hashtabeller som referenstyper
Liksom Hashtable
en referenstyp Hashtable
omfattar tilldelningen av en en grundkopia, det vill säga att variabeln som tilldelats Hashtable
refererar till refererar till samma . Ingen kopia av Hashtable
görs. Exempel:
$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 Räkna upp över en hash-tabell
Om du Hashtable
vill bearbeta varje par i en använder du egenskapen Nycklar för att hämta listan med nycklar som en matris och sedan räkna upp de element i matrisen som hämtar det associerade värdet via egenskapen Value eller ett nedsänkt objekt enligt följande
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123}
foreach ($e in $h1.Keys) {
"Key is " + $e + ", Value is " + $h1[$e]
}
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för