about_Ref
Kısa açıklama
Başvuru türü değişkeninin nasıl oluşturulacağını ve kullanılacağını açıklar. Bir işlevin ona geçirilen değişkenin değerini değiştirmesine izin vermek için başvuru türü değişkenlerini kullanabilirsiniz.
Uzun açıklama
Değişkenleri başvuruya veya değere göre işlevlere geçirebilirsiniz.
Değere göre bir değişken geçirdiğinizde, verilerin bir kopyasını geçirirsiniz.
Aşağıdaki örnekte işlev, ona geçirilen değişkenin değerini değiştirir. PowerShell'de tamsayılar değer türleridir, bu nedenle değere göre geçirilirler.
Bu nedenle, değeri $var
işlevin kapsamı dışında değişmez.
Function Test($data)
{
$data = 3
}
$var = 10
Test -data $var
$var
10
Aşağıdaki örnekte, içeren bir değişken Hashtable
bir işleve geçirilir. Hashtable
bir nesne türüdür, bu nedenle varsayılan olarak işleve başvuruyla geçirilir.
Başvuruya göre bir değişken geçirirken işlev verileri değiştirebilir ve işlev yürütülürken bu değişiklik devam eder.
Function Test($data)
{
$data.Test = "New Text"
}
$var = @{}
Test -data $var
$var
Name Value
---- -----
Test New Text
işlevi, işlevin kapsamının dışında kalıcı olan yeni bir anahtar-değer çifti ekler.
Başvuru parametrelerini kabul etmek için işlevler yazma
geçirilen verilerin türünden bağımsız olarak işlevlerinizi bir parametreyi başvuru olarak alacak şekilde kodlayabilirsiniz. Bunun için parametre türünü veya [ref]
olarak System.Management.Automation.PSReference
belirtmeniz gerekir.
Başvuruları kullanırken, verilerinize Value
erişmek için türünün özelliğini System.Management.Automation.PSReference
kullanmanız gerekir.
Function Test([ref]$data)
{
$data.Value = 3
}
Başvuru bekleyen bir parametreye değişken geçirmek için değişkeninizi başvuru olarak atamanız gerekir.
Not
Köşeli ayraçlar ve parantezler her ikisi de gereklidir.
$var = 10
Test -data ([ref]$var)
$var
3
.NET yöntemlerine başvuru geçirme
Bazı .NET yöntemleri, başvuru olarak bir değişken geçirmenizi gerektirebilir. Yöntemin tanımı bir parametre üzerinde , out
veya ref
anahtar sözcüklerini in
kullandığında, bir başvuru bekler.
[int] | Get-Member -Static -Name TryParse
Name MemberType Definition
---- ---------- ----------
TryParse Method static bool TryParse(string s, [ref] int result)
TryParse
yöntemi bir dizeyi tamsayı olarak ayrıştırmaya çalışır. Yöntem başarılı olursa, döndürür $true
ve sonuç başvuruyla geçtiğiniz değişkende depolanır.
PS> $number = 0
PS> [int]::TryParse("15", ([ref]$number))
True
PS> $number
15
Başvurular ve kapsamlar
Başvurular, üst kapsamdaki bir değişkenin değerinin alt kapsamda değiştirilmesini sağlar.
# 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
Yalnızca başvuru türünün değişkeni değiştirildi.