about_Ref
Rövid leírás
A referenciatípus-változók létrehozását és használatát ismerteti. Hivatkozástípus-változókkal lehetővé teheti, hogy egy függvény módosítsa a neki átadott változó értékét.
Hosszú leírás
A változókat hivatkozás vagy érték alapján is átadhatja a függvényeknek.
Amikor érték szerint ad át egy változót, az adatok másolatát adja át.
Az alábbi 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, ezért érték szerint vannak á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 függvényt Hashtable
tartalmazó változó lesz átadva 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árot, 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óddal hivatkozhatnak egy paraméterre, 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ás használata esetén az adatok eléréséhez a Value
System.Management.Automation.PSReference
típus tulajdonságát kell használnia.
Function Test([ref]$data)
{
$data.Value = 3
}
Ha egy változót olyan paraméternek szeretne átadni, amely hivatkozásra számít, be kell írnia a változót hivatkozásként.
Feljegyzés
A zárójelek és zárójelek egyaránt kötelezőek.
$var = 10
Test -data ([ref]$var)
$var
3
Hivatkozások átadása .NET-metódusokra
Egyes .NET-metódusok esetében szükség lehet egy változó hivatkozásként való átadására. Amikor a metódus definíciója a kulcsszavakat in
vagy out
ref
egy paramétert használja, a metódus 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 sikerrel jár, az visszaadja$true
, és az eredményt a referencia á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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: