about_Ref

Rövid leírás

A referenciatípus változóinak létrehozását és használatát ismerteti. Referencia típusú változók használatával lehetővé teheti egy függvény számára, hogy módosítsa a neki átadott változó értékét.

Hosszú leírás

A változókat hivatkozással vagy érték alapján adhatja át a függvényeknek.

Amikor érték alapján ad át egy változót, az adatok másolatát adja át.

A következő példában a függvény módosítja a neki átadott változó értékét. A PowerShellben az egész számok értéktípusok, így érték alapján lesznek átadva. Ezért az érték $var nem változik a függvény hatókörén kívül.

Function Test($data)
{
    $data = 3
}

$var = 10
Test -data $var
$var
10

Az alábbi példában egy változót tartalmazó Hashtable változót ad át egy függvénynek. Hashtable objektumtípus, ezért alapértelmezés szerint hivatkozással továbbítja a függvénynek.

Ha hivatkozással ad át egy változót, a függvény módosíthatja az adatokat, és ez a változás a függvény végrehajtása után is megmarad.

Function Test($data)
{
    $data.Test = "New Text"
}

$var = @{}
Test -data $var
$var
Name                           Value
----                           -----
Test                           New Text

A függvény hozzáad egy új kulcs-érték párt, amely a függvény hatókörén kívül marad.

Függvények írása referenciaparaméterek elfogadásához

A függvények kódolásával hivatkozásként vehet fel egy paramétert, függetlenül az átadott adatok típusától. Ehhez meg kell adnia a paraméterek típusát a következőként System.Management.Automation.PSReference: , vagy [ref].

Hivatkozások használata esetén az adatok eléréséhez a ValueSystem.Management.Automation.PSReference típus tulajdonságát kell használnia.

Function Test([ref]$data)
{
    $data.Value = 3
}

Ha egy változót egy olyan paraméternek szeretne átadni, amely hivatkozást vár, a változót hivatkozásként kell megadnia.

Megjegyzés

A zárójelek és a zárójelek egyaránt kötelezőek.

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

Hivatkozások átadása .NET-metódusok számára

Egyes .NET-metódusok esetében szükség lehet egy változó hivatkozásként való átadására. Ha a metódus definíciója kulcsszavakat invagy outref paramétereket használ, hivatkozásra számít.

[int] | Get-Member -Static -Name TryParse
Name     MemberType Definition
----     ---------- ----------
TryParse Method     static bool TryParse(string s, [ref] int result)

A TryParse metódus egy sztringet egész számként próbál elemezni. Ha a metódus sikeres, visszaadja $true, és az eredményt a hivatkozás által átadott változó tárolja.

PS> $number = 0
PS> [int]::TryParse("15", ([ref]$number))
True
PS> $number
15

Hivatkozások és hatókörök

A hivatkozások lehetővé teszik a szülőhatókörben lévő változó értékének módosítását egy gyermekhatókörben.

# 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

Csak a referenciatípus változója módosult.

Lásd még