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 不具备的,包括无三元运算符 (?:) 或空值合并运算符 (??)。没有能力实现新类型,更不用说从另一种类型继承的类型了。您还会发现 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 回答