[問題] 問...Hashtable物件

看板C_Sharp (C#)作者 (哇120)時間18年前 (2007/09/20 21:00), 編輯推噓6(606)
留言12則, 4人參與, 最新討論串1/2 (看更多)
抱歉新手發問~"~ 最近才開始碰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)

09/20 21:20, , 1F
應該就只是'05的Hashtable新增時不是循序這樣吧? @~@
09/20 21:20, 1F

09/20 21:26, , 2F
我跑的結果跟你一樣 不知道書上那個是用啥跑的 @@
09/20 21:26, 2F

09/20 21:42, , 3F
那就讓我更好奇它的foreach怎麼處理的了= =
09/20 21:42, 3F

09/20 21:48, , 4F
這本書教下載SDK直接用command line編譯 囧""
09/20 21:48, 4F

09/20 21:59, , 5F
hashtable本然就沒有順序概念阿~應該是隨意亂取的~
09/20 21:59, 5F

09/20 22:01, , 6F
看看object id看看,也許是取那個順序了~
09/20 22:01, 6F

09/20 22:05, , 7F
http://0rz.tw/fb36Z 中間有用foreach的用法~
09/20 22:05, 7F

09/21 18:08, , 8F
XD微軟的foreach輸出也不是照順序的(下面範例)
09/21 18:08, 8F

09/21 18:09, , 9F
中間片段foreach解說看不懂DictionaryEntry是甚麼= =
09/21 18:09, 9F

09/21 18:11, , 10F
他說the element type is DictionaryEntry 不是key/value
09/21 18:11, 10F

12/21 17:01, , 11F
ret大大說的沒錯,hashtable沒順序,你要用foreach取出來當然
12/21 17:01, 11F

12/21 17:01, , 12F
會亂跑,你為何不用陣列呢
12/21 17:01, 12F
文章代碼(AID): #16ycxe34 (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #16ycxe34 (C_Sharp)