Delen via


about_Ref

Korte beschrijving

Hierin wordt beschreven hoe u een variabele van het verwijzingstype maakt en gebruikt. U kunt variabelen van het verwijzingstype gebruiken om een functie toe te laten de waarde te wijzigen van een variabele die eraan wordt doorgegeven.

Lange beschrijving

U kunt variabelen doorgeven aan functies op basis van verwijzing of 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 wordt doorgegeven. In PowerShell zijn gehele getallen waardetypen, zodat ze worden doorgegeven door een waarde. Daarom is de waarde van $var ongewijzigd 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 doorgegeven aan een functie. Hashtable is een objecttype, dus het wordt standaard doorgegeven aan de functie via verwijzing.

Bij het doorgeven van een variabele op basis van verwijzing, kan de functie de gegevens wijzigen en die wijziging blijft bestaan nadat de functie wordt 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 code schrijven om een parameter als referentie te gebruiken, 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 cast uw variabele als verwijzing typen.

Notitie

De haken en haakjes zijn beide vereist.

$var = 10
Test -data ([ref]$var)
$var
3

Verwijzingen naar .NET-methoden doorgeven

Voor sommige .NET-methoden moet u mogelijk een variabele doorgeven als referentie. Wanneer in de definitie van de methode de trefwoorden in, outof ref voor een parameter worden gebruikt, 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 resultaat 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