![]() |
|
Dealing with Hashtable in CSharp - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم مقالات C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=177) +--- الموضوع : Dealing with Hashtable in CSharp (/showthread.php?tid=7608) |
Dealing with Hashtable in CSharp - Sajad - 10-02-13 [COLOR="#800000"]بسم الله الرحمن الرحيم ((رب اشرح لي صدري ويسر لي امري واحلل عقدة من لساني يفقهوا قولي)) صدق الله العلي العظيم [/COLOR] السلام عليكم ورحمة الله وبركاته
سنتحدث في هذا الموضوع عن الHashtable وكيفية استخدامها والتعامل معها. بسم الله الرحمن الرحيم
Hashtable: احدى الكائنات التابعة لمجال الاسماء System. Collection في لغة الC# يستخدم زوج من المفاتيح والقيم لخزن البيانات فيها ,حيث تستخدم المفتاح لإيجاد القيمة المطلوبة في عمليات البحث. و تكون قيمة المفتاح ثابتة لا تتغير. كيفية تعريف Instance من HashTable: [COLOR="#A52A2A"]اولا يجب اضافة مجال الاسماء System.Collection ومن ثم نقوم بتعريف Instance من الكائن HashTable: [/COLOR] PHP كود : using System.Collections; ومن الممكن ان نحدد كمية البيانات التي نريد اضافتها ,ذلك لان كائن الHashTable لديه 15 دالة OverLoading ومن ضمنها دالة تحديد كمية البيانات المراد اضافتها. PHP كود : Hashtable.Hashtable(int capacity) كيفية اضافة البيانات الى HashTable [COLOR="#A52A2A"]تكون الاضافة الى HashTable عن طريق اما الاسناد المباشر للمفاتيح (حيث تعتبر المفاتيح بمثابة Index في هذا النوع) او عن طريق الدالة Add حيث تقبل هذه الدالة مدخلين من نوع object صيغتها: ( Add(object key, object value) ) او عن طريق اسناد قيم اولية لها. ملاحظه: بالإمكان ان تكون الKey والValue أي نوع من انواع المتغيرات لأنه كما قلنا كلاهما من نوع object. اليك هذا المثال لتوضيح الشرح:[/COLOR] PHP كود : Hashtable htable;[COLOR="#A52A2A"]في السطر الاخير سيأخذ المفتاح (3) العنصر "jameel" مكان العنصر "jamal" ,يجوز ذلك في حالة الاسناد المباشر ,وتسمى بإعادة الاسناد (reassign) ويجب الملاحظة انه لا يجوز اضافة قيم بنفس المفتاح مرتين اذا كنت تستخدم دالة الAdd. وأيضا من الممكن ان تكون القيم والمفاتيح من انواع اخرى او من نفس النوع من المتغيرات كالتالي:[/COLOR] PHP كود : htable.Add("s", "ss");فكما تلاحظون في السطر الاول المفتاح والقيمة من نفس النوع وفي السطر الثاني المفتاح من نوع نصي والقيمة من نوع رقمي. كيفية جلب البيانات من الHashTable: [COLOR="#A52A2A"]بما ان مدخلات الHashtable.Add من نوع object لذا يجب عمل Casting اثناء جلب البيانات من الHashtable او مايعرف بالBoxing (هي عملية تحويل بيانات من نوع object او من نوع مرجعي الى بيانات من انواع اخرى كال int, char, …..) ,حيث يتم جلب القيم عنه طريق المفتاح. اليك كيفية ذلك:[/COLOR] اولا جلب البيانات عن طريق الIndex والIndex هنا يمثل المفتاح PHP كود : string value = htable[1] as string; [COLOR="#A52A2A"]السطر اعلاه يقوم بجلب قيمة المفتاح (1) وخزنها في المتغير النصي (s). او جلب جميع البيانات هكذا:[/COLOR] PHP كود : foreach (string value in hashtable.Values) البحث عن القيم: يتم البحث عن القيم عن طريق الدالة ContainsValue حيث تأخذ هذه الدالة مدخل واحد من نوع object يمثل القيمة المراد البحث عنها. PHP كود : if (htable.ContainsValue("sajad"))[COLOR="#A52A2A"]ويتم البحث عن المفاتيح عن طريق دالة الContainsKey او دالة Contains. حيث ترجع هذه الدوال True اذا كانت القيمة او المفتاح موجودا في الHashtable و ترجع False عند عدم ايجاد القيمة او المفتاح المراد البحث عنها.[/COLOR] حذف القيم: يتم حذف القيم باستخدام الدال Remove حيث تأخـــذ هذه الدالة باراميتر واحد من نوع object يمثل قيمة المفتاح. اذ يتم حذف القيم عن طريق ذكر المفتاح. PHP كود : htable.Remove(3); [COLOR="#A52A2A"]هنا يتم حذف قيمة المفتاح (3). ومن الدوال المهمة ايضا دالة الClear لحذف جميع العناصر ودالة CopyTo لنسخ الازواج من قيم ومفاتيح الى مصفوفة ذات بعد واحد من نوع DictionaryEntry ودالة الCount لجب عدد الازواج الموجودة في الHashtable من (Key& Value). اليك هذه الامثلة:[/COLOR] PHP كود : int c = htable.Count;// معرفة عدد الازواجاو استخدام دالة الCopyTo لنسخ القيم فقط بدون المفاتيح هكذا: PHP كود : object[] o = new object[c];ولا تنسونا و والدي في دعواتكم و وفقنا الله واياكم لما فيه الصلاح والارشاد Dealing with Hashtable in CSharp - abulayth - 10-02-13 السلام عليكم شكرا لك على هذا الشرح المميز يعطيك العافية Dealing with Hashtable in CSharp - Sajad - 10-02-13 [COLOR="#800000"] abulayth كتب :السلام عليكم عليكم السلام اخي الكريم بارك الله فيك شكرا على التعليق ![]() [/COLOR] Dealing with Hashtable in CSharp - hago - 10-02-13 Dealing with Hashtable in CSharp - Sajad - 10-02-13 hago كتب : [COLOR="#800000"]بارك الله فيك شكرا على التعليق الجميل[/COLOR] Dealing with Hashtable in CSharp - Itachi - 01-05-13 الله يعطيك العافية :d :d :d :d :d :d Dealing with Hashtable in CSharp - Sajad - 02-05-13 Itachi كتب :[b]الله يعطيك العافية :d :d :d :d :d :d السلام عليكم الله يعافيك اخي العزيز[/b] |