1

Powershell 2.0 で C# 3.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])
    }
}

しかし、 $table には、このコードのビットの後に 0 列があります。

DataTable クラスの Columns プロパティに列を追加する方法は既に知っています。コレクションを直接初期化する方法を知りたいです。

4

2 に答える 2

1

C# コレクション初期化機能は、PowerShell スクリプト言語では使用できません。PowerShell には、C# オブジェクト初期化機能に近い機能があります。

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

一般に、C# には PowerShell にはない機能が多数あることがわかります。これには、三項演算子がない (?:) や null 合体演算子 (??) などがあります。別の型から継承する型はなおさら、新しい型を実装する機能はありません。また、PowerShell では、C# ではできないことを実行できることもわかります。REPL エクスペリエンス、ハッシュテーブルの組み込み構文、@{}名前付きパラメーター、位置パラメーター、オプション パラメーターなどの機能を使用した簡単なコマンド ライン パラメーター解析、およびパイプライン入力からのパラメーターのバインドのサポートを提供します。 . どちらも長所と好き嫌いがあります。:-)

将来のバージョンの PowerShell でコレクション初期化子機能が実装されることを希望する場合は、Microsoft Connect サイトで提案を送信できます。

于 2012-06-25T23:26:44.927 に答える
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)
于 2012-06-25T14:19:15.940 に答える