好吧,我確實遇到了一個簡單的 (?) 問題:我無法從 ArrayList 中洗掉給定的哈希表:
$testarraylist = New-Object System.Collections.ArrayList
$testarraylist.Add(1)
$testarraylist.Add(2)
$testarraylist.Add(3)
$testarraylist.Add(4)
$testarraylist.Add(@{1=1})
$testarraylist.Add(@{2=2})
$testarraylist.Add(@{3=3})
$testarraylist.Add(5)
$testarraylist.Add(6)
$testarraylist.Add(7)
我可以洗掉簡單的“串列”元素,但我無法洗掉哈希表元素
$testarraylist.remove(x)
我發現我的唯一方法是使用
$testarraylist.removeat(4)
哪個作業,但沒有更簡單的方法嗎?我搜索了一下,我發現了很多例子,但奇怪的是沒有關于這個特定案例。好吧,也許并不奇怪,因為它可能非常簡單,所以這就是為什么從來沒有人問過這個問題?或者我的谷歌技能讓我失望......?
提前致謝。
uj5u.com熱心網友回復:
這一切都來自 ArrayList 如何查找您要洗掉的物件。如果您再次查看 .NET 規范,System.Int32則會發現類似數字是值型別,而類似集合System.Collections.Hashtable是參考型別。
基本上,它的意思是,值型別總是“按值”傳遞,但對于參考型別,只傳遞對該實體的“參考”。
您可以嘗試一下, so 1 -eq 1,因為兩者具有相同的值,但是 @{1=1} -ne @{1=1},因為它們是兩個單獨的實體,因此是兩個不同的參考。
因此,您必須先將原始實體的參考存盤在變數中:
$h = @{1=1}
$testarraylist.Add($h)
$testarraylist.Remove($h)
因為這是 .NET 和基本上所有編程語言中的一個基本且重要的概念,我建議您花幾分鐘時間閱讀更多相關資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/338507.html
標籤:电源外壳
下一篇:根據檔案名移動檔案
