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.PSReferencebelirtmeniz 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 , outveya ref anahtar sözcüklerini inkullandığı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 $trueve 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.

Ayrıca bkz.