Latest web development tutorials

C # الوراثة (عام)

عام (عام) يسمح لك لتأخير إعداد نوع البيانات من فئة أو البرمجة طريقة عناصر من مواصفات، حتى حان الوقت لاستخدامها في الواقع البرنامج.وبعبارة أخرى، فإنه يسمح لك لكتابة فئة عامة أو الطريقة التي يمكن أن تعمل مع أي نوع البيانات.

يمكنك كتابة الطبقة مواصفات أو طريقة عن طريق استبدال أنواع بيانات المعلمة. عندما يتم استدعاء الدالة منشئ أو أسلوب المترجم واجه فئة من شأنها أن تولد رمز لمعالجة نوع البيانات المحدد. ومثال بسيط التالية تساعدك على فهم هذا المفهوم:

باستخدام نظام.
باستخدام System.Collections.Generic.

مساحة GenericApplication
{
    الطبقة العامة MyGenericArray <T>
    {
        خاصة T [] مجموعة.
        MyGenericArray الجمهور (حجم كثافة العمليات)
        {
            مجموعة = جديد T [حجم + 1].
        }
        الجمهور تي getItem (مؤشر كثافة العمليات)
        {
            عودة مجموعة [المؤشر].
        }
        setItem الفراغ الجمهور (مؤشر كثافة العمليات، T قيمة)
        {
            مجموعة [المؤشر] = القيمة؛
        }
    }
           
    اختبار الطبقة
    {
        ساكنة باطلة الرئيسية (سلسلة [] وسائط)
        {
            // تعلن مجموعة صحيحا MyGenericArray <كثافة> intArray = الجديدة MyGenericArray <كثافة> (5)؛
            // تعيين قيمة ل(الباحث ج = 0؛ ج <5؛ ج ++)
            {
                intArray.setItem (ج، ج * 5)؛
            }
            // احصل على قيمة (الباحث ج = 0؛ ج <5؛ ج ++)
            {
                Console.Write (intArray.getItem (ج) + "")؛
            }
            Console.WriteLine ()؛
            // بتعريف صفيف حرف MyGenericArray <شار> charArray = الجديدة MyGenericArray <شار <(5)؛
            // تعيين قيمة ل(الباحث ج = 0؛ ج <5؛ ج ++)
            {
                charArray.setItem (ج، (شار) (ج + 97))؛
            }
            // احصل على قيمة (الباحث ج = 0؛ ج <5؛ ج ++)
            {
                Console.Write (charArray.getItem (ج) + "")؛
            }
            Console.WriteLine ()؛
            Console.ReadKey ()؛
        }
    }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

05101520
ABCDE

عام (عام) ميزات

استخدام الأدوية هو برنامج لتعزيز القدرات التقنية، وتحديدا في الجوانب التالية:

  • انها تساعدك على تحقيق أقصى قدر من إعادة استخدام التعليمات البرمجية، نوع من الحماية للسلامة وتحسين الأداء.
  • يمكنك إنشاء فئات مجموعة عامة. تحتوي مكتبة. NET الطبقة إطار عدة فئات جديدة لجمع عام في مساحة الاسمSystem.Collections.Generic.يمكنك استخدام هذه الفئات مجموعة عامة بدلا من ذلك جمع الصفوفSystem.Collections.
  • يمكنك إنشاء واجهات العامة الخاصة، والطبقات العامة، طريقة عام الأحداث العامة ومندوب عام.
  • يمكنك تقييد فئة عامة للوصول إلى أنواع بيانات محددة.
  • حول أنواع البيانات العامة المستخدمة في نوع المعلومات التي يمكن الحصول عليها في وقت التشغيل باستخدام الانعكاس.

عام (عام) طريقة

في المثال أعلاه، وقد استخدمنا فئة عامة، يمكن أن نعلن لعام المعلمات نوع الأسلوب. ويوضح البرنامج التالي هذا المفهوم:

باستخدام نظام.
باستخدام System.Collections.Generic.

GenericMethodAppl مساحة
{
    برنامج الدرجة
    {
        ثابت علوي قابل للتغيير باطلة <T> (المرجع تي LHS، المرجع T يمين)
        {
            T درجة الحرارة.
            درجة الحرارة = الطرف الأيسر.
            LHS = RHS.
            يمين = درجة الحرارة.
        }
        ساكنة باطلة الرئيسية (سلسلة [] وسائط)
        {
            كثافة العمليات أ، ب،
            شار ج، د.
            و= 10؛
            ب = 20؛
            ج = 'أنا'؛
            د = 'V'؛

            // العرض قبل Console.WriteLine قيمة التبادل ( "القيم كثافة العمليات قبل استدعاء مبادلة:")؛
            Console.WriteLine ( "A = {0}، ب = {1}"، أ، ب).
            Console.WriteLine ( "القيم شار قبل استدعاء مبادلة:")؛
            Console.WriteLine ( "ج = {0}، د = {1}"، ج، د).

            // مبادلة نداء
            مبادلة <كثافة> (المرجع لذلك، المرجع ب)؛
            مبادلة <شار <(المرجع ج، د المرجع)؛

            // بعد تبادل Console.WriteLine قيمة العرض ( "القيم كثافة العمليات بعد استدعاء مبادلة:")؛
            Console.WriteLine ( "A = {0}، ب = {1}"، أ، ب).
            Console.WriteLine ( "القيم شار بعد استدعاء مبادلة:")؛
            Console.WriteLine ( "ج = {0}، د = {1}"، ج، د).
            Console.ReadKey ()؛
        }
    }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

قيم كثافة العمليات قبل استدعاء مبادلة:
و= 10، ب = 20
القيم شار قبل استدعاء مبادلة:
ج = أنا، د = V
قيم كثافة العمليات بعد استدعاء مبادلة:
و= 20، ب = 10
القيم شار بعد استدعاء مبادلة:
ج = V، د = أنا

عام (عام) بتكليف

يمكنك تحديد من خلال المعلمات نوع مندوب العامة. على سبيل المثال:

مندوب تي NumberChanger <T> (T ن)؛

يوضح المثال التالي استخدام جنة:

باستخدام نظام.
باستخدام System.Collections.Generic.

مندوب تي NumberChanger <T> (T ن)؛
GenericDelegateAppl مساحة
{
    الطبقة TestDelegate
    {
        ساكنة الباحث الأسطوانات = 10؛
        العام ساكنة الباحث AddNum (الباحث ع)
        {
            الأسطوانات + = ع؛
            العودة الأسطوانات.
        }

        العام ساكنة الباحث MultNum (كثافة ف)
        {
            الأسطوانات * = س،
            العودة الأسطوانات.
        }
        الباحث ثابت العام getNum ()
        {
            العودة الأسطوانات.
        }

        ساكنة باطلة الرئيسية (سلسلة [] وسائط)
        {
            // إنشاء مثيل مندوب NumberChanger <كثافة> NC1 = الجديدة NumberChanger <كثافة> (AddNum)؛
            NumberChanger <كثافة> NC2 = الجديدة NumberChanger <كثافة> (MultNum)؛
            // استدعاء الأسلوب باستخدام NC1 الكائن مندوب (25)؛
            Console.WriteLine ( "قيمة رقم: {0}"، getNum ())؛
            NC2 (5)؛
            Console.WriteLine ( "قيمة رقم: {0}"، getNum ())؛
            Console.ReadKey ()؛
        }
    }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

قيمة رقم: 35
قيمة رقم: 175