我知道 PowerShell 函数调用不需要像 C# 这样的特定括号,但是当我尝试调用 .NET 类函数时,似乎总是需要括号,例如:
[Int32]::Parse("12")
那么这是一个语法规则吗?
我知道 PowerShell 函数调用不需要像 C# 这样的特定括号,但是当我尝试调用 .NET 类函数时,似乎总是需要括号,例如:
[Int32]::Parse("12")
那么这是一个语法规则吗?
通常,您引用 .NET 类型的方式是将类型名放在方括号中,例如'' -is [string]
. 虽然'' -is 'string'
效果也很好,但我发现使用方括号时更容易判断是指的是 .NET 类型。
您引用静态类型成员的方式是::
在类型说明符上使用,如[System.Int32]::Parse("12")
. 请注意,如果 PowerShellSystem.
无法按照您指定的方式找到它,它将在您的类型名前添加。这是一个很好的捷径。还有一些类型加速器以相同的方式出现,例如[int]::Parse("12")
.
是的,这是一条规则。更具体地说,当您在对象上调用方法时(与 cmdlet 或独立函数相反),您始终使用您所调用的大括号()
并用逗号分隔参数,
:
# A cmdlet: no use of (), parameter names and values separated by spaces
$obj = New-Object -TypeName PSObject -ArgumentList @{Name='hello'}
# A method: () are used even with no arguments
$obj.GetType()
请注意,在英语中,这些通常被称为圆括号,而大括号通常指的是花括号,它们是:{}
.