【发布时间】:2021-08-01 18:25:34
【问题描述】:
要使用.net 类型,我通常使用Add-Type,然后使用New-Object:
Add-Type -AssemblyName "System.Windows.Forms"
$win = New-Object Windows.Forms.Form
但实际上我也可以只使用方括号语法来引用类型并使用静态方法:
$win = [System.Windows.Forms.Form]::new()
它们之间有什么区别?对于 .Net 类型,我没有找到太多带有方括号语法的文档。我为方括号找到的所有文档都是针对数组的。
【问题讨论】:
-
您可以使用第二个选项,但我认为它需要 PS 5.1+
-
第二种方法在阅读代码时更快更明显。
New-Object和Add-Member都非常慢。 -
使用
new()静态方法更快,但不仅如此,当你输入这样的方法创建一个不带括号的对象时,你可以看到所有重载的构造函数定义(如果有的话.. ) 帮助您选择。例如尝试[datetime]::new并按回车键。附言我不会再使用[System.Reflection.Assembly]::LoadWithPartialName(),因为它是obsolete
标签: powershell syntax constructor