Delen via


about_Ref

Korte beschrijving

Hierin wordt beschreven hoe u een variabele voor het referentietype 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 per 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. Daarom is de waarde ongewijzigd $var 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 op basis van verwijzing.

Wanneer een variabele wordt doorgegeven per 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 als verwijzing 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 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 voor 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 deze 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