جامعة أهلاً عرب

العودة   جامعة أهلاً عرب > كلية Microsoft.Net و Visual Studio > قسم لغة Microsoft Visual C#.NET

قسم لغة Microsoft Visual C#.NET هذا القسم مخصص للمواضيع والاستفسارات حول لغة #C الجديدة والقوية من مايكروسوفت والحائزة على شهرة عالمية كبيرة تنافس Visual Basic .net

آخر 10 مشاركات اطلبو أي لعبة وسآتيكم بها أنشاْ الله ( آخر مشاركة : MOUSSAKHRAIS - مشاركات : 1 - )           »          نظام الصادر و الوارد ( مشاركات : 31 - )           »          المحاسب المسلم لادارة المنشئات التجارية ( مشاركات : 2 - )           »          ارجو المساعده الترقيم التلقائي في نوذج فرعي ( مشاركات : 2 - )           »          فرصة دراسية ( آخر مشاركة : almohib_alsaghir - مشاركات : 2 - )           »          اخوي توت عنخ امون الحقني....كارثة حصلت ( آخر مشاركة : tutankhamoun - مشاركات : 1 - )           »          UTM University ولا تتردد بالسؤال ( مشاركات : 179 - )           »          استفسار ( آخر مشاركة : angelwings - مشاركات : 8 - )           »          برنامج شوؤن الموظفين ( مشاركات : 18 - )           »          من عنده خبره بال Java NetBeans ياريت يساعدني ( آخر مشاركة : ALMasoudi - مشاركات : 3 - )

إنشاء موضوع جديد  إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
قديم 2007-09-16, 07:39 PM   #1 (permalink)
عميد كلية
 
الصورة الرمزية عبد الكريم كنعان
 
الجنس: ذكـــر
الجنسية: سوريا
بلد الإقامة: سوريا
الوظيفة: تكنلوجيا المعلومات - برمجة
المؤهل الدراسي: البكلوريوس
التخصص العلمي: تكنلوجيا المعلومات - هندسة حاسب آلي
كيف عرفت عن موقعنا: اعلان عن موقعكم في موقع اخر
تاريخ التسجيل: Aug 2007
المشاركات: 408
شكراً: 34
تم شكره 8 مرة في 5 مشاركة
معدل تقييم المستوى:2 عبد الكريم كنعان 50- اعتقد انك ستكون مشهوراً في الفترة القادمة.

إرسال رسالة عبر مراسل MSN إلى عبد الكريم كنعان
Collecting Data Items: الصف ArrayList

Collecting Data Items

أحببت مشاركتم في منتداكم الذي يذخر بالمميزين أمثال الاستاذ النبهاني وغيره حيث أني معجب به جدا
لنبدأ درسنا بالتعرف عن كيفية تخزين البيانات ومعالجتها.

يوجد العديد من الصفوف التي تمكننا من التعامل مع البيانات، هذه الصفوف موجودة في فضاء الأسماء System.Collections منها: ArrayList، SortedList، Queue، Stack، Hashtable، BitArray، StringCollection، StringDictionary، ListDictionary، HybridDictionary، NameValueCollection.
إضافة وحذف عناصر:
الصف ArrayList: تسمح لنا بتخزين أي كائنات نشاء حيث يقبل الاجراء Add كائن (Object) الكود التالي يوضح كيفية إضافة عناصر إليها:
كود:
using System.Collections;
ArrayList coll = new ArrayList();
// Add individual items to the collection
string s = "Hello";
coll.Add(s);
coll.Add("hi");
coll.Add(50);
coll.Add(new object());
كما يحوي الصف ArrayList على الاجراء AddRange الذي يمكنه أن يقبل مجموعة من العناصر أو أي كائن بشرط أنه يدعم الواجهة (Interface) ICollection مثل (جميع أنواع المصفوفات، ArrayList)، المثال التالي يوضح ذلك:
كود:
string[] anArray =
 new string[] { "more", "or", "less" };
coll.AddRange(anArray);
object[] anotherArray =
  new object[] { new object(), new ArrayList() };
coll.AddRange(anotherArray);
يعتبر الصف ArrayList من المجموعات الديناميكية، لذلك إن استخدام الاجرائين Add و AddRange يؤدي إلى إضافة العناصر إلى آخر المجموعة، كما أن هذا الصف يحوي على الاجراء Insert الذي يسمح بإدخال العنصر في موقع محدد، الكود التالي يوضح ذلك:
كود:
coll.Insert(3, "Hey all");
string[] moreStrings =
 new string[] { "goodnight", "see ya" };
coll.Insert(4, moreStrings);
كما يمكنك أيضا تحديد العنصر الذي تريد من خلال رقم الفهرسة (الدليل) له على سبيل المثال:
كود:
coll[3] = "Hey All";
كما يوجد ثلاث توابع من أجل عملية الحذف وهم: Remove، RemoveAt، RemoveRange
التابع Remove يقوم بحذف كائن محدد من المجمع ولا يظهر أي شيء يدل على أن عملية الحذف قد تمت، أم أنه في الاصل لم يجد هذا الكائن الذي طلبت حذفه، الكود التالي يوضح استخدام التابع Remove:
كود:
coll.Add("Hello");
coll.Remove("Hello");
أما التابع RemoveAt يقوم بحذف عنصر محدد وذلك بتحديد رقم فهرسته (دليله)، أما التابع RemoveRange يقوم بعملية الحذف لمجموع من الفهارس (الأدلة)، الكود التالي يوضح كيفية استخدام التابعين:
كود:
// Remove first four item in ArrayList
coll.RemoveAt(0);
// Removes first four items in array list
coll.RemoveRange(0, 4);
كما يحوي الصف ArrayList على توابع أخرى مفيدة مثل التابع Clear الذي يقوم بإفراغ المجمع من كافة العناصر التي يحويها.
والتابع IndexOf فهو مفيد من أجل معرفة رقم دليل (الفهرسة) لكائن ما، طبعا إن كان موجودا وفي حال أن الكائن لم يكن موجودا فإن التابع سيعيد القيمة -1.
التايع Contain من اسمه يدل على أنه تابع يستخدم من أجل التحقق من وجود كائن ما ضمن المجمع، الكود التالي يوضح كيفية استخدام هذه التوابع:
كود:
string myString = "My String";
if (coll.Contains(myString))
{
 int index = coll.IndexOf(myString);
 coll.RemoveAt(index);
}
else
{
 coll.Clear();
}
كيفية استرجاع القيم المخزنة داخل المجمع:
يمكن استخدام الدليل لتحديد الكائن المراد ضمن المجمع كما في المثال التالي:
كود:
for (int i = 0; i < coll.Count; i++)
{
  Console.WriteLine(coll[i]);
}
كما يمكن استخدام الواجهة IEnumerable وذلك من خلال التابع GetEnumerable حيث يعيد كائن من نوع الواجهة IEnumerable الذي يسمح لك بسهوله التنقل بين الكائنات المخزنة ضمن المجمع.
الجدول التالي يبين خصائص الواجهة IEnumerable:
Current (للقراءة) يعطي الكائن الحالي في المجمع.
الجدول التالي يوضح أهم الاجراءات الموجودة ضمن الواجهة IEnumerable:
MoveNext يقوم هذا التابع بالانتقال إلى الكائن التالي ضمن المجمع، ويحدد بنفس الوقت من خلال القيمة المنطقية التي يعيدها فيما إذا كان قد وصل إلى نهاية المجمع.
Reset هذا الاجراء يقوم بالانتقال إلى ما فبل الكائن الأول الموجود ضمن المجمع لكي يتيح للتابع MoveNext الوقوف على الكائن الأول ضمن المجمع.
المثال التالي يوضح كيفية الاستفادة من الواجهة IEnumerable:
كود:
IEnumerator enumerator = coll.GetEnumerator();
while (enumerator.MoveNext())
{
  Console.WriteLine(enumerator.Current);
}
كما يمكن استخدام الحلقة foreach (مع جميع الصفوف التي تدعم الواجهة IEnumerable) التي تقدم ميزة هامة والتي هي إذا كنا نعلم نوع جميع الكائنات المخزنة في المجمع فإن استخدام الحلقة foreach سوف يوفر علينا عملية التحويل من object إلى نوع العناصر، المثال التالي يوضح ذلك:
كود:
ArrayList newColl = new ArrayList();
newColl.Add("Hello");
newColl.Add("Goodbye");
foreach (string item in newColl)
{
  Console.WriteLine(item);
}
كما يمكن استخدام الواجهة IList، ICollection توضح فيما يلي كيفية استخدام الواجهة IList:
كود:
IList il = newColl;
for (int i = 0; i < il.Count; i++)
{
  Console.WriteLine(il[i]);
}
ترتيب العناصر:
يحتوي الصف ArrayList على التابع Sort الذي يقوم بعملية ترتيب العناصر المخزنة داخل المجمع، يعتمد التابع Sort في عمله على الصف Comparer هذا الصف الذي بدوره يدعم الواجهة IComparer، هذه الواجهة تحوي تابع واحد فقط وهو Compare الذي يأخذ كائنين ويقارن بينهما الجدول التالي يوضح نتائج المقارنة:
الناتج أقل من الصفر يعني أن الكائن الذي على اليسار أقل من الكائن الذي على اليمين.
صفر الكائنين متساويين.
أكبر من الصفر الكائن الذي على اليسار أكبر من الكائن الذي على اليمين.
يمكنك القيام بعملية ترتيب عناصر المجموعة بتنفيذ التعليمة التالية:
كود:
coll.Sort();
كما يسمح لك التابع Sort بتخصيص الكائن الذي سيقوم بالترتيب، فبدلا من استخدام الصف Comparer سنستخدم الصف CaseInsensitiveComparer كما في المثال التالي:
كود:
coll.Sort(new CaseInsensitiveComparer());
كما بإمكانك أنت أن تعرف عملية المقارنة وذلك بإنشاء صفك الخاص وتوريثه من الواجهة IComprarer كما في المثال التالي:
كود:
class DescendingComparer : IComparer
{
  #region IComparer Members
  CaseInsensitiveComparer _comparer = new CaseInsensitiveComparer();
  public int Compare(object x, object y)
  {
    return _comparer.Compare(y, x);
  }
  #endregion
}
الآن نقوم بعملية الترتيب باستخدام الصف الجديد المنشأ كما يلي:
كود:
coll.Sort(new DescendingComparer());
إذا كان فيه أخطاء فصوبوني:
وجزاكم الله خيرا
عبد الكريم كنعان غير متواجد حالياً   رد مع اقتباس
مرحبا عزيزي الزائر
لمشاهدة باقي ردود هذا الموضوع, من فضلك قم بتسجيل الدخول او اضغط هنا للتسجيل.
إنشاء موضوع جديد  إضافة رد

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة
الانتقال السريع


الساعة الآن 09:04 PM.


Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd
إن الكتابات المنشورة في الجامعة ملك لأصحابها و هي لا تعبر عن وجهة نظر إدارة الجامعة


Search Engine Friendly URLs by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53