다음 Powershell 문에서 왜 Powershell Object []에서 .Net 배열 목록이나 스택을 인스턴스화하려면 쉼표가 필요합니까?Powershell 개체 [] to .Net 컬렉션?
$list = "A","B","C"
$stack = New-Object System.Collections.Stack(,$list)
이유는 필요 않고 쉼표은 무엇을 의미합니까?
다음 Powershell 문에서 왜 Powershell Object []에서 .Net 배열 목록이나 스택을 인스턴스화하려면 쉼표가 필요합니까?Powershell 개체 [] to .Net 컬렉션?
$list = "A","B","C"
$stack = New-Object System.Collections.Stack(,$list)
이유는 필요 않고 쉼표은 무엇을 의미합니까?
쉼표은 PowerShell의 배열 연산자입니다.
문제는 PowerShell이 배열을 오버로드에 대한 인수로 래핑 해제하는 것입니다. 쉼표를 추가하면 배열로 유지됩니다. 쉼표 연산자는 항상 새로운 요소의 배열에 인수 값을 랩 :
New-Object : Cannot find an overload for "Stack" and the argument count: "3".
액션 (2 판)에 의 Windows PowerShell에서 : 쉼표없이
는이 오류가 발생합니다.직접 생성자에 $list
을 통과하려고하면이 오류 얻을 :이 무슨 일이 일어나고 있는지에 대해 설명 생각
PS C:\Users\Svick> New-Object System.Collections.Stack $list
New-Object : Cannot find an overload for "Stack" and the argument count: "3".
을 : PowerShell을 생성자에 인수로 배열의 각 항목을 처리합니다. 모든 매개 변수를 하나의 매개 변수에 넣으려면 배열을 다른 배열로 묶어야합니다.
Ah HA! powershell의 흥미로운 기능. 고마워요. –
@Ashwin 추가 한 대안을 삭제했습니다. 작동하지 않는 것이 두렵습니다. '@ (@ (@ (1)))'은'@ (1)'과 다를 바 없습니다. –