-
مجموعة من عملية تنفيذ المفهرس في C#
أحد الجوانب الأكثر إثارة للاهتمام في لغة C# هو مفهرس الفصل. لتبسيط الأمر، ما يسمى بالمفهرس هو نوع خاص من السمات التي يمكنك من خلالها الإشارة إلى فصلك الخاص تمامًا مثل المصفوفة. من الواضح أن هذه الميزة مفيدة بشكل خاص عند إنشاء فئات المجموعة، ولكن في حالات أخرى، مثل معالجة الملفات الكبيرة أو تجريد بعض الموارد المحدودة، من المفيد جدًا أيضًا أن يكون لديك سلوك يشبه المصفوفة في الفصل. ستوجهك هذه المقالة خلال عملية إعداد فصل دراسي لاستخدام المفهرس. لكن أولاً، دعونا نحدد مفهوم الخصائص لتوفير بعض المعلومات الأساسية الضرورية.
الخصائص إذا كنت قد كتبت برنامجًا في VB6، فيجب أن تكون على دراية جيدة بطرق الخاصية، ما يسمى بطرق الخاصية هي في الواقع أعضاء فئة خاصة تنفذ الوصول المتحكم فيه إلى حقول الفئة الخاصة. هناك طريقتان للسمات في لغة C#، إحداهما get، والتي يمكن من خلالها إرجاع قيمة الحقل الخاص، والثانية، والتي يمكن من خلالها تعيين قيمة الحقل الخاص. على سبيل المثال، بأخذ الكود التالي كمثال، يتم إنشاء خاصية الاسم الأول للتحكم في الوصول إلى عضو الفئة الخاصة:
شخص من الدرجة {
سلسلة خاصة؛
سلسلة عامة الاسم الأول {
الحصول على {العودة؛}
تعيين {الاسم الأول = القيمة؛}
}
}
يمكن ترميز إعلانات الملكية على النحو التالي:
الشخص ع = شخص جديد ()؛
p.FirstName = "لامونت";
Console.WriteLine (p.FirstName);
كما ترون، فإن إعلان السمة يشبه إلى حد كبير إعلان المجال، باستثناء أنه يعلن أيضًا عن عضوين خاصين، وهما وفقًا لمايكروسوفت ما يسمى بالوصول. يتم استدعاء وظيفة الحصول على الوصول عندما يتم استدعاء خاصية على الجانب الأيمن من التعبير أو عند استخدام الخاصية كمعلمة لروتين فرعي (أو وظيفة) أخرى. على العكس من ذلك، يتم استدعاء وظيفة الوصول المحددة عندما يتم استدعاء الخاصية على الجانب الأيسر من التعبير ويتم تعيين قيمة الحقل الخاص عن طريق تمرير معلمة القيمة ضمنيًا. يمكنك إنشاء خصائص للقراءة فقط عن طريق حذف وظيفة الوصول المحددة، بحيث تؤدي أي محاولة لتعيين الخاصية إلى حدوث خطأ في الترجمة.
فوائد استخدام الفهارس
أدناه هو هيكلها
<modifier> <return type> هذه [قائمة الوسائط]
...{
يحصل
...{
// احصل على الرموز هنا
}
تعيين
...{
// تعيين الرموز هنا
}
}
ملحوظة:
المُعدِّل: مُعدِّل، مثل خاص أو عام أو محمي أو داخلي
هذا: هذه كلمة رئيسية خاصة في لغة C#، والتي تمثل المثيل الحالي للفئة المرجعية. هنا يعني فهرس الفصل الحالي.
قائمة الوسائط: يشير هذا إلى معلمات المفهرس.
بعد أن طال الحديث لننتقل إلى الموضوع، فلماذا علي أن أدور في هذه الدائرة؟ في الواقع، هذا لأن مفهرس الفصل يشبه إلى حد كبير خاصية، وهذا هو الحال أيضًا من وجهة نظر الكود. فيما يلي مثال لفئة تحتوي على مفهرس يُرجع سلسلة:
عينة الصف {
السلسلة العامة هذا [int فهرس] {
احصل على {return "لقد اجتزت" + الفهرس }
}
}
لاحظ أن اسم السمة هنا هو هذا، والذي يشير إلى المثيل الحالي للفئة، وقائمة المعلمات محاطة بأقواس مربعة بدلاً من الأقواس. وهذا أيضًا مفهرس للقراءة فقط. من أجل تغييره إلى نوع القراءة/الكتابة، أضفت وظيفة الوصول المحددة. عند تعريف مفهرس، لا تأخذ بالضرورة معلمة واحدة فقط. يمكن أن تكون معلمات المفهرس من أي نوع، ولكن عادةً ما يكون int هو النوع الأكثر منطقية. من الممكن أيضًا أن يكون هناك أكثر من مفهرس (محمل بشكل زائد) في نفس الفئة.
بعد تعريف فئة العينة كما هو مذكور أعلاه، يمكننا استخدام المفهرس كسمة افتراضية، كما هو موضح أدناه:
العينة = عينة جديدة ()؛
Console.WriteLine(s[55]);
الخصائص والمفهرسات هناك عدة اختلافات بين الخصائص والمفهرسات:
يجب أن يكون لكل سمة من سمات الفئة اسم فريد، ويجب أن يكون لكل مفهرس محدد في الفئة توقيع فريد أو قائمة معلمات (بحيث يمكن تنفيذ التحميل الزائد للمفهرس).
يمكن أن تكون الخصائص ثابتة ويجب أن يكون المفهرسون أعضاء في المثيلات.
تتمتع وظائف الوصول المحددة للمفهرسين بالوصول إلى المعلمات التي تم تمريرها إلى المفهرس، بينما لا تحتوي وظائف الوصول إلى الخاصية على معلمات.
غالبًا ما يفضل منفذو البرامج سلوك المصفوفة للواجهات، لذلك يمكنك أيضًا تحديد مفهرسات للواجهة. تعلن كل من واجهات مجموعة IList وIDictionary عن وصول المفهرسين إلى العناصر المخزنة الخاصة بهم.
عند الإعلان عن مفهرس لواجهة ما، تذكر أن الإعلان يشير فقط إلى وجود المفهرس. ما عليك سوى توفير وظائف الوصول المناسبة، دون تضمين معدّلات النطاق. تعلن التعليمة البرمجية التالية عن المفهرس كجزء من الواجهة IImplementMe:
واجهة IIimplementMe {
سلسلة هذا [مؤشر كثافة العمليات]
{
يحصل؛
تعيين؛
}
يجب أن تحدد الفئة المطبقة المقابلة على وجه التحديد وظائف الوصول وتعيين مفهرس IimplementMe.
هذه نظرة عامة أساسية على المفهرسات. يجب أن يكون لديك الآن فهم أفضل للدور الذي تلعبه المفهرسات في تطويرك.
فئة SampleCollection<T>
{
خاص T[] arr = جديد T[100];
العامة T هذا[int i]
{
يحصل
{
إرجاع arr[i];
}
تعيين
{
arr[i] = value;
}
}
}
// يوضح هذا الفصل كيفية استخدام رمز العميل للمفهرس
برنامج الصف
{
الفراغ الثابت الرئيسي (سلسلة [] الحجج)
{
SampleCollection<string> stringCollection = new SampleCollection<string>();
stringCollection[0] = "مرحبًا أيها العالم";
System.Console.WriteLine(stringCollection[0]);
}
}
هذه المقالة مأخوذة من مدونة CSDN، يرجى الإشارة إلى المصدر عند إعادة الطباعة: http://blog.csdn.net/licheng19891020/archive/2009/12/09/4974516.aspx .
-