Powershell:调用 .NET 函数是否总是需要括号?
Powershell: Does calling .NET a function always require parenthesis?
我知道 PowerShell 函数调用不需要像 C# 那样的特定括号,但是当我尝试调用 .NET class 函数时,似乎总是需要括号,例如:
[Int32]::Parse("12")
这是语法规则吗?
您引用 .NET 类型的一般方式是将类型名称放在方括号中,例如'' -is [string]
。尽管 '' -is 'string'
也能正常工作,但我发现在使用方括号时更容易分辨出引用的是 .NET 类型。
引用静态类型成员的方式是在类型说明符上使用 ::
,如 [System.Int32]::Parse("12")
中那样。请注意,如果 PowerShell 无法按照您指定的方式找到它,它将在 System.
前面加上您的类型名称。这是一个很好的捷径。还有一些以相同方式出现的类型加速器,例如[int]::Parse("12")
.
是的,这是规定。更具体地说,当您在对象上调用方法时(与 cmdlet 或独立函数相反),您总是使用所谓的大括号 ()
并用逗号 ,
:[= 分隔参数14=]
# 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()
请注意,在英语中,这些 much 通常称为 parentheses,大括号通常指 curly大括号 是这些:{}
.
我知道 PowerShell 函数调用不需要像 C# 那样的特定括号,但是当我尝试调用 .NET class 函数时,似乎总是需要括号,例如:
[Int32]::Parse("12")
这是语法规则吗?
您引用 .NET 类型的一般方式是将类型名称放在方括号中,例如'' -is [string]
。尽管 '' -is 'string'
也能正常工作,但我发现在使用方括号时更容易分辨出引用的是 .NET 类型。
引用静态类型成员的方式是在类型说明符上使用 ::
,如 [System.Int32]::Parse("12")
中那样。请注意,如果 PowerShell 无法按照您指定的方式找到它,它将在 System.
前面加上您的类型名称。这是一个很好的捷径。还有一些以相同方式出现的类型加速器,例如[int]::Parse("12")
.
是的,这是规定。更具体地说,当您在对象上调用方法时(与 cmdlet 或独立函数相反),您总是使用所谓的大括号 ()
并用逗号 ,
:[= 分隔参数14=]
# 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()
请注意,在英语中,这些 much 通常称为 parentheses,大括号通常指 curly大括号 是这些:{}
.