about_Ref
Deskripsi singkat
Menjelaskan cara membuat dan menggunakan variabel jenis referensi. Anda dapat menggunakan variabel jenis referensi untuk mengizinkan fungsi untuk mengubah nilai variabel yang diteruskan ke variabel tersebut.
Deskripsi panjang
Anda dapat meneruskan variabel ke fungsi berdasarkan referensi atau berdasarkan nilai.
Saat Anda meneruskan variabel menurut nilai, Anda meneruskan salinan data.
Dalam contoh berikut, fungsi mengubah nilai variabel yang diteruskan ke dalamnya. Di PowerShell, bilangan bulat adalah jenis nilai sehingga diteruskan oleh nilai.
Oleh karena itu, nilai $var
tidak berubah di luar cakupan fungsi.
Function Test($data)
{
$data = 3
}
$var = 10
Test -data $var
$var
10
Dalam contoh berikut, variabel yang Hashtable
berisi diteruskan ke fungsi. Hashtable
adalah jenis objek sehingga secara default diteruskan ke fungsi berdasarkan referensi.
Saat meneruskan variabel berdasarkan referensi, fungsi dapat mengubah data dan perubahan tersebut tetap ada setelah fungsi dijalankan.
Function Test($data)
{
$data.Test = "New Text"
}
$var = @{}
Test -data $var
$var
Name Value
---- -----
Test New Text
Fungsi ini menambahkan pasangan kunci-nilai baru yang bertahan di luar cakupan fungsi.
Menulis fungsi untuk menerima parameter referensi
Anda dapat mengkodekan fungsi Anda untuk mengambil parameter sebagai referensi, terlepas dari jenis data yang diteruskan. Ini mengharuskan Anda menentukan jenis parameter sebagai System.Management.Automation.PSReference
, atau [ref]
.
Saat menggunakan referensi, Anda harus menggunakan Value
properti jenis System.Management.Automation.PSReference
untuk mengakses data Anda.
Function Test([ref]$data)
{
$data.Value = 3
}
Untuk meneruskan variabel ke parameter yang mengharapkan referensi, Anda harus mengetikkan variabel Anda sebagai referensi.
Catatan
Tanda kurung dan tanda kurung diperlukan.
$var = 10
Test -data ([ref]$var)
$var
3
Meneruskan referensi ke metode .NET
Beberapa metode .NET mungkin mengharuskan Anda untuk meneruskan variabel sebagai referensi. Ketika definisi metode menggunakan kata kunci in
, , out
atau ref
pada parameter, itu mengharapkan referensi.
[int] | Get-Member -Static -Name TryParse
Name MemberType Definition
---- ---------- ----------
TryParse Method static bool TryParse(string s, [ref] int result)
Metode ini TryParse
mencoba mengurai string sebagai bilangan bulat. Jika metode berhasil, metode mengembalikan $true
, dan hasilnya disimpan dalam variabel yang Anda lewati dengan referensi.
PS> $number = 0
PS> [int]::TryParse("15", ([ref]$number))
True
PS> $number
15
Referensi dan cakupan
Referensi memungkinkan nilai variabel dalam cakupan induk diubah dalam cakupan anak.
# 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
Hanya variabel jenis referensi yang diubah.
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk