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.

Zie ook