2012-06-25 3 views
1

Powershell 2.0에서 C# 3.0 컬렉션 초기화 도구는 어떻게 사용합니까? (How to set collection inline?)Powershell 2.0 컬렉션 초기화 도구

나는

$table= New-Object System.Data.DataTable { 
    TableName = "my table" , 
    Columns = { 
     New-Object System.Data.DataColumn "col1",([string]) , 
     New-Object System.Data.DataColumn "col2",([long]) , 
     New-Object System.Data.DataColumn "col3",([datetime]) 
    } 
} 

을 시도했지만 $ 테이블은 코드의이 비트 후 0 열이 있습니다.

DataTable 클래스의 Columns 속성에 열을 추가하는 방법을 이미 알고 있습니다. 컬렉션의 직접 초기화를 수행하는 방법을 알고 싶습니다.

답변

1

C# 컬렉션 초기화 도구 기능은 PowerShell 스크립팅 언어에서 사용할 수 없습니다. ? PowerShell을은 C# 객체 이니셜 기능에 가까운 기능을 가지고 : 당신이 PowerShell을 더 삼항 연산자 (포함되지가없는 C 번호의 많은 기능이 있다는 것을 발견 할 것이다 : 일반적으로

Add-Type -AssemblyName System.Windows.Forms 
new-object system.drawing.point -property @{x = 1; y = 5} 

또는 널 병합 오퍼레이터 (??). 새로운 유형을 구현하는 기능은 없으며 다른 유형을 상속하는 유형은 훨씬 적습니다. 또한 PowerShell은 C#에서 REPL 환경을 제공 할 수없는 작업, 해시 테이블에 대한 기본 제공 구문 @{}, 명명 된 위치 매개 변수 및 선택적 매개 변수와 같은 기능을 사용하는 쉬운 명령 줄 매개 변수 구문 분석 및 파이프 라인에서 바인딩 매개 변수에 대한 지원을 수행 할 수 있습니다. 입력. 그들은 둘 다 자신의 장점과 싫어하는 것을 가지고 있습니다. :-)

차후 버전의 PowerShell에서 구현되는 컬렉션 초기화 프로그램 기능을 보려면 Microsoft Connect site에서 제안 사항을 제출할 수 있습니다.

+1

C# _sort of_에는 공정한 해시 테이블 지원이 있습니다. 'var hash = new Dictionary {{ "five", 5}, { "ten", 10}};와 같은 새로운 문장의 목록 초기화 부분에서 사용되어야합니다. – Shibumi

0
$table = New-Object system.Data.DataTable "my table" 

$col1 = New-Object system.Data.DataColumn "col1",([string]) 
$col2 = New-Object system.Data.DataColumn "col2",([long]) 
$col3 = New-Object system.Data.DataColumn "col3",([datetime]) 

$table.columns.add($col1) 
$table.columns.add($col2) 
$table.columns.add($col3) 
+0

DataTable 클래스의 Columns 속성에 열을 추가하는 방법을 묻지 않았습니다. 새 개체를 호출하는 동안 컬렉션 이니셜 라이저에 대한 구문을 구체적으로 묻습니다. –

+2

이 문제는 매우 잘못 될 수 있지만 AFAIK , 당신은 할 수 없습니다. –

관련 문제