about_Ref

Kısa açıklama

Bir 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.

Bir değişkeni değere göre 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ürleri olduğundan değere göre geçirilir. 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.

Bir değişkeni başvuruya göre 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

İşlev, 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

İşlevlerinizi, geçirilen veri türüne bakılmaksızın 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
}

Bir değişkeni başvuru bekleyen bir parametreye geçirmek için, değişkeninizi başvuru olarak atama yazmanız gerekir.

Not

Köşeli ayraçlar ve ayraçlar her ikisi de gereklidir.

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

.NET yöntemlerine başvuru geçirme

Bazı .NET yöntemleri, bir değişkeni başvuru olarak geçirmenizi gerektirebilir. Yöntemin tanımı bir parametrede , 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)

yöntemi bir TryParse dizeyi tamsayı olarak ayrıştırmaya çalışır. Yöntem başarılı olursa $truedöndürür 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ştirilmesine olanak 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.