看板 C_Sharp 關於我們 聯絡資訊
抱歉新手發問~"~ 最近才開始碰C# 可能這個問題是很簡單的問題= = 以下物件使用(using System.Collections)_ Hashtable hashtable = new Hashtable(); hashtable.Add("02", "台北"); hashtable.Add("03", "桃園"); hashtable.Add("06", "台南"); hashtable.Add("07", "高雄"); hashtable.Add("04", "台中"); hashtable.Add("05", "嘉義"); foreach (string zip in hashtable.Keys)//讓陣列內數值都跑一遍 { Console.WriteLine(" {0}\t\t{1}", zip, hashtable[zip]); } 執行結果是 課本範例執行結果 04 台中 02 台北 03 桃園 03 桃園 02 台北 06 台南 07 高雄 07 高雄 06 台南 04 台中 05 嘉義 05 嘉義 搞的我一頭霧水= = 書本上說他是key/value對照的hash foreach是由小到大的key值輸出 可是他的順序卻不一樣 原本以為hash的bucket的key值的是隨機 不過他的執行結果都一樣= = 另外一個猜測課本的hash founction跟VC#2005的hash function不一樣 麻煩高手解答... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.79.15 ※ 編輯: wa120 來自: 61.64.79.15 (09/20 21:05)
Eric30:應該就只是'05的Hashtable新增時不是循序這樣吧? @~@ 09/20 21:20
Eric30:我跑的結果跟你一樣 不知道書上那個是用啥跑的 @@ 09/20 21:26
wa120:那就讓我更好奇它的foreach怎麼處理的了= = 09/20 21:42
wa120:這本書教下載SDK直接用command line編譯 囧"" 09/20 21:48
retsamsu:hashtable本然就沒有順序概念阿~應該是隨意亂取的~ 09/20 21:59
retsamsu:看看object id看看,也許是取那個順序了~ 09/20 22:01
retsamsu:http://0rz.tw/fb36Z 中間有用foreach的用法~ 09/20 22:05
wa120:XD微軟的foreach輸出也不是照順序的(下面範例) 09/21 18:08
wa120:中間片段foreach解說看不懂DictionaryEntry是甚麼= = 09/21 18:09
wa120:他說the element type is DictionaryEntry 不是key/value 09/21 18:11
abcf:ret大大說的沒錯,hashtable沒順序,你要用foreach取出來當然 12/21 17:01
abcf:會亂跑,你為何不用陣列呢 12/21 17:01