about_Ref
Korte beschrijving
Hierin wordt beschreven hoe u een verwijzingstypevariabele maakt en gebruikt. U kunt referentietypevariabelen gebruiken om een functie de waarde te laten wijzigen van een variabele die eraan wordt doorgegeven.
Lange beschrijving
U kunt variabelen doorgeven aan functies op basis van verwijzing of op waarde.
Wanneer u een variabele op waarde doorgeeft, geeft u een kopie van de gegevens door.
In het volgende voorbeeld wijzigt de functie de waarde van de variabele die eraan is doorgegeven. In PowerShell zijn gehele getallen waardetypen, zodat ze worden doorgegeven door waarde.
De waarde van $var de functie wordt daarom niet gewijzigd buiten het bereik van de functie.
Function Test($data)
{
$data = 3
}
$var = 10
Test -data $var
$var
10
In het volgende voorbeeld wordt een variabele met een Hashtable functie doorgegeven. Hashtable is een objecttype, zodat het standaard wordt doorgegeven aan de functie doorverwijzing.
Wanneer een variabele wordt doorgegeven door een verwijzing, kan de functie de gegevens wijzigen en die wijziging blijft bestaan nadat de functie is uitgevoerd.
Function Test($data)
{
$data.Test = "New Text"
}
$var = @{}
Test -data $var
$var
Name Value
---- -----
Test New Text
Met de functie wordt een nieuw sleutel-waardepaar toegevoegd dat buiten het bereik van de functie blijft.
Functies schrijven om referentieparameters te accepteren
U kunt uw functies codeeren om een parameter te gebruiken als verwijzing, ongeacht het type gegevens dat wordt doorgegeven. Hiervoor moet u het type parameters opgeven als System.Management.Automation.PSReference, of [ref].
Wanneer u verwijzingen gebruikt, moet u de Value eigenschap van het System.Management.Automation.PSReference type gebruiken om toegang te krijgen tot uw gegevens.
Function Test([ref]$data)
{
$data.Value = 3
}
Als u een variabele wilt doorgeven aan een parameter die een verwijzing verwacht, moet u de variabele als verwijzing typen.
Notitie
De haakjes en haakjes zijn beide vereist.
$var = 10
Test -data ([ref]$var)
$var
3
Verwijzingen doorgeven aan .NET-methoden
Voor sommige .NET-methoden moet u mogelijk een variabele doorgeven als verwijzing. Wanneer de definitie van de methode gebruikmaakt van de trefwoorden in, outof ref op een parameter, wordt een verwijzing verwacht.
[int] | Get-Member -Static -Name TryParse
Name MemberType Definition
---- ---------- ----------
TryParse Method static bool TryParse(string s, [ref] int result)
De TryParse methode probeert een tekenreeks te parseren als een geheel getal. Als de methode slaagt, wordt het geretourneerd $trueen wordt het resultaat opgeslagen in de variabele die u hebt doorgegeven door verwijzing.
PS> $number = 0
PS> [int]::TryParse("15", ([ref]$number))
True
PS> $number
15
Verwijzingen en bereiken
Met verwijzingen kan de waarde van een variabele in het bovenliggende bereik worden gewijzigd binnen een onderliggend bereik.
# Create a value type variable.
$i = 0
# Create a reference type variable.
$iRef = [ref]0
# Invoke a scriptblock to attempt to change both values.
&{$i++;$iRef.Value++}
# Output the results.
"`$i = $i;`$iRef = $($iRef.Value)"
$i = 0;$iRef = 1
Alleen de variabele van het verwijzingstype is gewijzigd.