我的代码没有打印存储在数组中的值,而是打印System.Collections.Hashtable[$i]
。
$text = Read-Host
$id = @{}
for ($i=0; $i -le $text; $i++)
{
$id[$i] = Read-Host
}
for ($i=0; $i -le $text; $i++)
{
Write-Host $id[$i]
}
输出继电器:
PS C:\Users\mifi>.\1.ps1 2 Keshav kk kk System.Collections.Hashtable[0] System.Collections.Hashtable[1] System.Collections.Hashtable[2]
每当我运行此代码时,Output都会产生上述形式。
答案 0 :(得分:3)
请不要发布您编写的代码或从内存中输入的代码。你得到像
这样的输出System.Collections.Hashtable[0] System.Collections.Hashtable[1] System.Collections.Hashtable[2]
因为在您的实际代码中您有一个声明
Write-Host "$id[$i]"
而不是
行Write-Host $id[$i]
您的示例代码假装有。
PowerShell只在双引号字符串中进行简单的变量扩展。它不会像人们期望的那样扩展更复杂的表达式(如索引或属性访问)。表达式"$id[$i]"
被扩展为变量$id
的字符串表示形式(在本例中是对象类的名称:“System.Collections.Hashtable”),后跟一个开放的方括号,变量$i
的值和结束方括号。