当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 关于参考

作者:精品下载站 日期:2024-12-14 02:19:32 浏览:13 分类:玩电脑

关于参考


简短描述

描述如何创建和使用引用类型变量。您可以使用引用类型变量来允许函数更改传递给它的变量的值。

详细描述

您可以通过引用通过值将变量传递给函数。

当您按值传递变量时,您正在传递数据的副本。

在以下示例中,该函数更改传递给它的变量的值。在 PowerShell 中,整数是值类型,因此它们是按值传递的。因此,$var 的值在函数范围之外保持不变。

Function Test($data)
{
    $data = 3
}

$var = 10
Test -data $var
$var
10

在以下示例中,包含 Hashtable 的变量被传递给函数。 Hashtable 是一种对象类型,因此默认情况下它通过引用传递给函数。

当通过引用传递变量时,函数可以更改数据,并且该更改在函数执行后仍然存在。

Function Test($data)
{
    $data.Test = "New Text"
}

$var = @{}
Test -data $var
$var
Name                           Value
----                           -----
Test                           New Text

该函数添加了一个新的键值对,该键值对在函数的作用域之外持续存在。

编写函数来接受引用参数

您可以对函数进行编码以将参数作为引用,而不管传递的数据类型如何。这要求您将参数类型指定为 System.Management.Automation.PSReference[ref]

使用引用时,必须使用 System.Management.Automation.PSReference 类型的 Value 属性来访问数据。

Function Test([ref]$data)
{
    $data.Value = 3
}

要将变量传递给需要引用的参数,您必须键入将变量强制转换为引用。

笔记

方括号和圆括号都是必需的。

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

传递对 .NET 方法的引用

某些 .NET 方法可能要求您传递变量作为引用。当方法的定义在参数上使用关键字 inoutref 时,它需要一个引用。

[int] | Get-Member -Static -Name TryParse
Name     MemberType Definition
----     ---------- ----------
TryParse Method     static bool TryParse(string s, [ref] int result)

TryParse 方法尝试将字符串解析为整数。如果该方法成功,它将返回$true,并且结果存储在您通过引用传递的变量中。

PS> $number = 0
PS> [int]::TryParse("15", ([ref]$number))
True
PS> $number
15

参考文献和范围

引用允许在子作用域内更改父作用域中的变量值。

# 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

仅更改了引用类型的变量。

参见

  • about_变量
  • about_Environment_Variables
  • about_函数
  • about_Script_Blocks
  • about_范围

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯