برمجة متقدمة سي شارب - الفهرسة C# - Indexers
برمجة متقدمة سي شارب - الفهرسة C# - Indexers
ماهي الفهرسة Indexers؟
الفهارس Indexers تسمح للكائنات لتفهرس مثل المصفوفات. عندما يتم تعريف الفئة (الكلاس) ك الفهرسة Indexers فانها تسلك سلوك المصفوفات الافتراضية virtual. وعندها يمكن الوصول للفهرس باستخدام مشغل المصفوفة([]).
الصيغة العامة ل الفهرسة Indexers
element-type this[int index] { // موصل القراءة. get { // يعود بالقيمة حسب الفهرس المعطى } // موصل الكتابة. set { // يتم اسناد القيم حسب الفهرس المعطى } }
استخدام الفهرسة Indexers
التصريح عن الفهرسة أو المفهرسات يشبه التصريح عن الخصائص بخاصتين القراءة والكتابة get,set.ولكن الخصائص تعيد وتكتب للمتغيرات بينما المفهرسات فأنها تعيد مجموعة قيم من مثيلات الكائن . بمعنى انها يجزء الكائن لعدة مجموعات بيانات صغير ويفهرس كل مجموعة.
يتم تعريف الخصائص عن طريق تسميتها. بينما المفهرسات يتم عن طريق الكلمة المحجوزة this.
مثال المفهرسات أو الفهرسة Indexers
using System; namespace IndexerApplication { class IndexedNames { private string[] namelist = new string[size]; static public int size = 10; public IndexedNames() { for (int i = 0; i < size; i++) namelist[i] = "N. A."; } public string this[int index] { get { string tmp; if( index >= 0 && index <= size-1 ) { tmp = namelist[index]; } else { tmp = ""; } return ( tmp ); } set { if( index >= 0 && index <= size-1 ) { namelist[index] = value; } } } static void Main(string[] args) { IndexedNames names = new IndexedNames(); names[0] = "Zara"; names[1] = "Riz"; names[2] = "Nuha"; names[3] = "Asif"; names[4] = "Davinder"; names[5] = "Sunil"; names[6] = "Rubic"; for ( int i = 0; i < IndexedNames.size; i++ ) { Console.WriteLine(names[i]); } Console.ReadKey(); } } }
ناتج المثال المفهرسات أو الفهرسة Indexers
Zara Riz Nuha Asif Davinder Sunil Rubic N. A. N. A. N. A.
الحمل الزائد OverLoad المفهرسات أو الفهرسة Indexers
يمكن ان يمرر للمفهرسات العديد من الباراميترات بحيث يتم استدعاء المفهرسة حسب الباراميترات الممررة لها.
مثال الحمل الزائد overload المفهرسات أو الفهرسة Indexers
using System; namespace IndexerApplication { class IndexedNames { private string[] namelist = new string[size]; static public int size = 10; public IndexedNames() { for (int i = 0; i < size; i++) { namelist[i] = "N. A."; } } public string this[int index] { get { string tmp; if( index >= 0 && index <= size-1 ) { tmp = namelist[index]; } else { tmp = ""; } return ( tmp ); } set { if( index >= 0 && index <= size-1 ) { namelist[index] = value; } } } public int this[string name] { get { int index = 0; while(index < size) { if (namelist[index] == name) { return index; } index++; } return index; } } static void Main(string[] args) { IndexedNames names = new IndexedNames(); names[0] = "Zara"; names[1] = "Riz"; names[2] = "Nuha"; names[3] = "Asif"; names[4] = "Davinder"; names[5] = "Sunil"; names[6] = "Rubic"; //using the first indexer with int parameter for (int i = 0; i < IndexedNames.size; i++) { Console.WriteLine(names[i]); } //using the second indexer with the string parameter Console.WriteLine(names["Nuha"]); Console.ReadKey(); } } }
ناتج الحمل الزائد overload المفهرسات أو الفهرسة Indexers
Zara Riz Nuha Asif Davinder Sunil Rubic N. A. N. A. N. A. 2
Ahmed Ata Almahallawi
Freelancer
Freelancer
IT Help Desk,
SEO experience,PHP,C#,ASPX,SQL
SEO experience,PHP,C#,ASPX,SQL
Al alami st
gaza -jabalia, Gaza Strip
Palestine
DOB: 05/10/1984
by +Ahmed Almahallawi
by +Ahmed Almahallawi
2/1/2014
التسميات: advance-csharp
<< الصفحة الرئيسية