PDA

View Full Version : مشکل با Hashtable



emad_67
یک شنبه 28 مرداد 1386, 23:10 عصر
من اعداد 1 تا 10 رو تو یه hashtable ذخیره کردم حالا میخوام با استفاده از حلقه foreach به اون اعداد دسترسی پیدا کنم


Hashtable objhash = newHashtable();
for (int i = 1; i <= 10; i++)
objhash.Add(i, i);
foreach(int a in objhash)
MessageBox.Show(a.ToString());

ولی همش از این قسمت ارور میده


int a in objhash

البته فکر میکنم که این ارور به خاطر نوع دسترسی به اعضا hashtbale که با key مشخص میشن داره ولی در کل من این رو چه جوری باید بنویسم که از من key رو نخواد آیا امکان داره؟

someCoder
یک شنبه 28 مرداد 1386, 23:32 عصر
فکر کنم دنبال این کارت رو راه بندازه:

Hashtable objhash = new Hashtable();
for (int i = 1; i <= 10; i++)
objhash.Add(i, i);
foreach (DictionaryEntry a in objhash)
MessageBox.Show(a.Value.ToString());

emad_67
یک شنبه 28 مرداد 1386, 23:40 عصر
خیلی ممنون از جوابتون
میشه یه توضیحی بدید که این DictionaryEntry چی کار میکنه؟
ضمنا با این کار اعداد از آخر به اول نمایش داده شدن نمیشه از اول به آخرش کرد؟

someCoder
دوشنبه 29 مرداد 1386, 00:12 صبح
خیلی ممنون از جوابتون
میشه بگید که این DictionaryEntry چی هست و چی کار میکنه؟
ضمنا با این کار اعداد از آخر به اول نمایش داده شدن نمیشه از اول به آخرش کرد؟

DictionaryEntry چیز خاصی نیست. فقط یک جفت کلید/مقدار هست که هر سطر از HashTable از این نوع هست.
در مورد ترتیبش هم که کاری نمیشه کرد! ساختار Hash برای داده هایی توش که ترتیب مهم نیست بکار میره و نمیشه در مورد ترتیبش کاری کرد. مگه اینکه از ساختمان داده دیگه ای استفاده بشه.

راستی، الان به فکرم رسید که احتمالا این کد برات بهتره، اینو هم امتحان کن:


foreach (int a in objhash.Values)
MessageBox.Show(a.ToString());