English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Basic Tutorial

C# Advanced Tutorial

C# Object-Oriented (OOP)

الطريقة الموسعة في C#

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

تعريف الطريقة الموسعة

الطرق الموسعة هي ميزة جديدة في C# 3.0، وتسمح بإضافة ميزات جديدة إلى الكود المصدر دون تعديل الكود المصدر نفسه، من خلال نموذج ADD File.

متطلبات الطريقة الموسعة:

  • الطرق الموسعة يجب أن تكون تحت تصنيف class مسبوقة بـ static.

  • تحتاج تنفيذ الطريقة الموسعة إلى أن يكون ثابتًا.

  • النوع الأول للطرق الموسعة هو هذا، مما يعني أنك بحاجة إلى تعريف كائن الفئة الموسعة، من النوع الثاني، قائمة بـ arguments للطريقة الموسعة.

في المثال التالي، IsGreaterThan() هي طريقة موسعة للنوع int، وتعود بالقيمة true إذا كان قيمة المتغير int أكبر من الم 参数 المقدم.

int i = 10;
bool result = i.IsGreaterThan(100); // returns FALSE

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

 الطرق الموسعة في Visual Studio IntelliSense تحتوي على إشارات خاصة، مما يسمح لك بتمييز الطرق الموسعة عن الطرق العادية بسهولة.

إشارات الطرق الموسعة في Visual Studio IntelliSense

كتابة الطرق الموسعة

دعنا الآن نرى كيفية كتابة الطرق الموسعة.

LINQ تقوم على طرق موسعة تقوم بعمليات على أنواع IEnumerable و IQueryble.

الطرق الموسعة هي طرق خاصة يتم تعريفها في فئة ثابتة. لتحديد طريقة موسعة، أولاً، قم بتعريف فئة ثابتة.

على سبيل المثال، في المثال التالي، قمنا بإنشاء فئة IntExtensions تحت مسمى ExtensionMethods. فئة IntExtensions ستحتوي على جميع الطرق الموسعة للنوع int. (يمكنك استخدام أي اسم للnamespace والفئة.)

namespace ExtensionMethods
{
    public static class IntExtensions
    {
    }
}

الآن، قم بتعريف طريقة ثابتة كطريقة توسيع، حيث يشير المعامل الأول في طريقة التوسيع إلى النوع الذي يتم تطبيق التوسيع عليه. سنستخدم هذا التوسيع على نوع int. لذا، يجب أن يتم تضمينint في المعامل الأولthis مؤشر.

على سبيل المثال، يتم تنفيذ طريقة IsGreaterThan() على نوع int، لذا هو المعامل الأولthis int i.

namespace ExtensionMethods
{
    public static class IntExtensions
     {
        public static bool IsGreaterThan(this int i, int value)
        {
            return i > value;
        }
    }
}

الآن، يمكنك تضمين مساحة التوسيع ExtensionMethods في أي مكان تريد استخدام هذه الطريقة التوسيع.

استخدام طرق التوسيع

using ExtensionMethods;
class Program
{
    static void Main(string[] args)
    {
        int i = 10;
        bool result = i.IsGreaterThan(100); 
        Console.WriteLine(result);
    }
}
الإخراج:
false
الفرق الوحيد بين طرق التوسيع العادية وطرق التوسيع هو أن المعامل الأول في طريقة التوسيع يحدد النوع الذي سيتم تنفيذ العملية عليه، يتبعه this الكلمات الرئيسية.

ملخص مبادئ طرق التوسيع

  1. يدعم C# فقط طرق التوسيع، ولا يدعم خصائص التوسيع، أحداث التوسيع، وعمليات التوسيع وما إلى ذلك.

  2. يجب أن تكون طرق التوسيع (التي تأتي قبل أول معاملthis) مُعلنة في فئة ثابتة غير عامة، ويجب أن تكون لديها معامل واحد، ويجب أن يستخدم المعامل الأول علامةthis.

  3. يطلب من محرر C# أن تكون الفئات الثابتة التي تحتوي على طرق التوسيع مملوكة للملف.

  4. يطلب من محرر C# 'استيراد' طرق التوسيع.

  5. يمكن لتعدد الفئات الثابتة تعريف نفس طريقة التوسيع.
    عند توسيع نوع باستخدام طريقة التوسيع، يتم توسيع النوع الفرعي أيضًا.

إعلان طريقة التوسيع

  • يجب أن يكون في فئة ثابتة غير محلية وغير عامة (لذلك يجب أن يكون هيكلا ثابتًا)

  • على الأقل يجب أن يكون هناك معامل واحد.

  • يجب أن يكون الأول للمعامل مرفقًا بكلمة this كحرف مقدم.

  • لا يمكن أن يكون الأول للمعامل يحتوي على أي ميزات أخرى (مثل ref أو out).

  • لا يمكن أن يكون نوع الأول للمعامل نوعًا يشير إلى نواة.

النقاط الرئيسية التي يجب تذكرها

  • الطرق الموسعة هي الطرق المخصصة التي لم تكن جزءًا من الفئة الأصلية.

  • يمكن إضافة الطرق الموسعة إلى الفئات المخصصة، .NET Framework أو الفئات الثالثة، البنيات أو الواجهات.

  • يجب أن يكون أول معامل للطريقة الموسعة نوعًا يمكن تطبيق الطريقة الموسعة عليه، يتبعهthisالكلمات الرئيسية.

  • يمكن استخدام الطرق الموسعة من خلال مسمى المساحة التي تحتوي على الطرق الموسعة في أي مكان في التطبيق.