Cara bekerja dengan kaedah peluasan di C #

Bahasa pengaturcaraan C # memberikan sokongan untuk kaedah peluasan dari C # 3.0. Kaedah peluasan adalah kaedah yang digunakan untuk memperluas fungsi jenis yang ada dengan menambahkan kaedah tanpa perlu membuat jenis turunan baru. Anda tidak perlu membuat subkelas kelas yang ada atau menyusun semula atau mengubah kelas yang ada untuk berfungsi dengan kaedah peluasan. Kaedah peluasan meningkatkan kebolehbacaan kod anda dan pada masa yang sama membolehkan anda memperluas fungsi jenis yang ada.

Kaedah peluasan umum di. Net merangkumi operator pertanyaan standard LINQ yang menambahkan keupayaan pertanyaan tambahan pada System.Collections.IEnumerable and System.Collections.Generic.IEnumerablejenisnya. Perhatikan bahawa anda boleh memanfaatkan kaedah peluasan untuk memperluas kelas atau antara muka tetapi anda tidak boleh mengganti kaedahnya. MSDN menyatakan: "Kaedah peluasan membolehkan anda" menambah "kaedah ke jenis yang ada tanpa membuat jenis turunan baru, mengumpul semula, atau mengubah jenis asal. Kaedah peluasan adalah sejenis kaedah statik khas, tetapi mereka dipanggil seolah-olah mereka adalah kaedah contoh pada jenis diperpanjang. "

Pada asasnya, kaedah peluasan adalah jenis khas kaedah statik dan membolehkan anda menambahkan fungsi ke jenis yang ada walaupun anda tidak mempunyai akses ke kod sumber dari jenis tersebut. Kaedah peluasan sama seperti kaedah statik lain tetapi mempunyai rujukan "ini" sebagai parameter pertama. Anda boleh menambah seberapa banyak kaedah peluasan yang anda mahu dengan jenis apa pun. Yang paling penting, anda juga boleh menambahkan kaedah peluasan kepada jenis nilai.

Semasa bekerja dengan kaedah peluasan, ingat perkara ini:

  • Kaedah peluasan mestilah kaedah statik
  • Kaedah peluasan mesti ada di dalam kelas statik - kelas boleh mempunyai nama apa pun
  • Parameter dalam kaedah peluasan harus selalu mempunyai kata kunci "ini" sebelum jenis yang perlu dipanggil kaedah tersebut

Perhatikan bahawa anda menentukan kaedah peluasan pada jenis yang mempunyai tanda tangan yang sama dengan kaedah lain dari jenis yang anda luaskan, kaedah peluasan tidak akan dipanggil.

Kaedah peluasan pengaturcaraan dalam C #

Di bahagian ini kita akan menerangkan cara memprogram kaedah peluasan menggunakan C #. Penyenaraian kod berikut menggambarkan bagaimana kaedah peluasan.

public static class StringExtensions

    {

        public static bool IsNumeric(this string str)

        {

            double output;

            return double.TryParse(str, out output);

        }

    }

Perhatikan parameter pertama untuk kaedah peluasan. Seperti yang telah dibincangkan, kaedah peluasan apa pun mestilah statik dan harus mempunyai kata kunci "ini" yang mendahului parameter yang anda mahukan. Apabila anda menentukan kata kunci "ini" dalam senarai parameter seperti yang ditunjukkan dalam contoh di atas, anda memberitahu penyusun bahawa kaedah peluasan telah ditentukan untuk kelas rentetan.

Inilah cara anda boleh menggunakan kaedah pelanjutan IsNumeric pada contoh rentetan.

static void Main(string[] args)

        {

            string str = "100";

            if (str.IsNumeric())

                Console.WriteLine("The string object named str contains numeric value.");

            Console.Read();

        }

Ketika anda menjalankan program di atas, pesan ("Objek string bernama str berisi nilai angka." Dipaparkan di tetingkap konsol.

Anda boleh menggunakan kaedah peluasan untuk menyuntik fungsi baru melalui kaedah kepada jenis yang memerlukan pengubahsuaian, pengurangan atau penyusunan semula jenis asal. Seperti yang saya sebutkan sebelumnya, kaedah peluasan juga dapat diterapkan pada jenis nilai. Mari kita lihat bagaimana ini dapat dicapai dengan contoh.

Kelas berikut bernama IntegerExtensions mengandungi kaedah peluasan bernama IsEven yang kembali benar jika bilangan bulat yang disebutnya adalah genap, sebaliknya.

public static class IntegerExtensions

    {

        public static bool IsEven(this int i)

        {

            return ((i % 2) == 0);

        }

    }

Dan, inilah cara anda boleh menggunakan kaedah pelanjutan IsEven pada bilangan bulat.

int n = 2;

if(n.IsEven())

 Console.WriteLine("The value of the integer is even.");