我是PowerShell的初學者,熟悉C#。最近我正在寫這個PowerShell腳本,並想創建一個Hashset。所以我寫了($ azAz是一個數組)從Powershell調用具有數組參數的構造函數
[System.Collections.Generic.HashSet[string]]$allset = New-Object System.Collections.Generic.HashSet[string]($azAZ)
並按下運行。我得到這個消息:
New-Object : Cannot find an overload for "HashSet`1" and the argument count: "52".
At filename.ps1:10 char:55
+ [System.Collections.Generic.HashSet[string]]$allset = New-Object System.Collecti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
然後,我用Google搜索構造函數在數組參數PowerShell和改變了代碼:
[System.Collections.Generic.HashSet[string]]$allset = New-Object System.Collections.Generic.HashSet[string](,$azAZ)
不知怎的,我現在得到這個消息:
New-Object : Cannot find an overload for "HashSet`1" and the argument count: "1".
At C:\Users\youngvoid\Desktop\test5.ps1:10 char:55
+ [System.Collections.Generic.HashSet[string]]$allset = New-Object System.Collecti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
找不到HashSet的重載和參數計數1?你在跟我開玩笑嗎?謝謝。
爲什麼逗號(,$阿扎茲)? – 2012-02-03 14:25:44
我不知道,我從谷歌搜索得到它。我甚至沒有閱讀過這篇文章,但至少它有把powershell作爲1個參數對待$ azAZ的能力。也許這是因爲逗號表示單獨的論點? – irisjay 2012-02-03 14:51:04
這是因爲逗號是數組創建操作符,所以它將$ azAZ變成一個單元素爲$ azAZ的數組 - 我認爲@($ azAZ)是創建一個數組的單元陣列的更清晰的方法。 – Massif 2012-02-03 15:04:28