Cara bekerjasama dengan delegasi Action, Func, dan Predicate di C #

Perwakilan adalah penunjuk fungsi selamat-jenis yang dapat merujuk kaedah yang mempunyai tanda tangan yang sama dengan perwakilan. Delegasi digunakan untuk menentukan metode panggilan balik dan melaksanakan penanganan acara, dan mereka dinyatakan menggunakan kata kunci "delegasi". Anda boleh menyatakan perwakilan yang boleh muncul sendiri atau bahkan bersarang di dalam kelas.

Apa itu perwakilan Func and Action? Bagaimana ia boleh digunakan?

Perbezaan asas antara delegasi Func dan Action adalah bahawa sementara yang pertama digunakan untuk perwakilan yang mengembalikan nilai, yang terakhir dapat digunakan untuk perwakilan di mana Anda tidak memiliki nilai kembali.

Func adalah perwakilan yang menunjukkan kaedah yang menerima satu atau lebih argumen dan mengembalikan nilai. Tindakan adalah perwakilan yang menunjukkan kaedah yang seterusnya menerima satu atau lebih argumen tetapi tidak mengembalikan nilai. Dengan kata lain, anda harus menggunakan Tindakan ketika perwakilan anda menunjukkan kaedah yang mengembalikan kekosongan.

Predicate adalah delegasi yang menerima satu atau lebih parameter generik dan mengembalikan nilai Boolean - anda boleh menganggapnya seperti Func. Delegasi predikat biasanya digunakan untuk melakukan operasi pencarian pada beberapa data berdasarkan satu set kriteria.

Perwakilan Tindakan Pengaturcaraan di C #

Anda boleh memanfaatkan delegasi di C # untuk melaksanakan kaedah dan kaedah panggilan balik. Perwakilan dalam C # mirip dengan penunjuk fungsi C ++, tetapi perwakilan C # selamat menggunakan jenis. Anda boleh menyampaikan kaedah sebagai parameter kepada perwakilan untuk membolehkan perwakilan menunjuk ke kaedah tersebut.

Coretan kod berikut menggambarkan sintaks untuk menggunakan Perwakilan tindakan.

Tindakan

Penyenaraian kod berikut menunjukkan bagaimana anda boleh menggunakan Action delegate. Coretan kod ini ketika dieksekusi akan mencetak perkataan "Hello !!!" di tetingkap konsol.

kekosongan statik Utama (string [] args)

        {

            Tindakan tindakan = Tindakan baru (Paparan);

            tindakan ("Hello !!!");

            Konsol. Baca ();

        }

Paparan kekosongan statik (mesej rentetan)

        {

            Console.WriteLine (mesej);

        }

Perwakilan Func Programming di C #

Sekarang mari kita fahami bagaimana kita dapat bekerjasama dengan delegasi Func di C #. Berikut adalah sintaks untuk perwakilan Func.

Keseronokan

Coretan kod berikut menggambarkan bagaimana anda boleh menggunakan delegasi Func di C #. Ia mencetak nilai Hra (dikira sebagai 40% dari gaji pokok). Gaji pokok diberikan kepadanya sebagai hujah.

kekosongan statik Utama (string [] args)

        {

            Func func = Func baru (CalculateHra);

            Console.WriteLine (func (50000));

            Konsol. Baca ();

        }

        CalculateHra berganda statik (int asas)

        {

            pulangan (berganda) (asas * .4);

        }

Perhatikan bahawa parameter kedua dalam deklarasi delegasi Func dalam potongan kode yang diberikan sebelumnya menunjukkan jenis pengembalian kaedah yang akan ditunjukkan oleh perwakilan. Dalam contoh ini, nilai Hra yang dikira dikembalikan dua kali ganda.

Perwakilan Predikat Pengaturcaraan di C #

Delegasi Predicate biasanya digunakan untuk mencari item dalam koleksi atau sekumpulan data. Berikut adalah sintaks untuk perwakilan Predicate.

Predikat

Perhatikan bahawa Predicate pada dasarnya setara dengan Func.

Pertimbangkan kelas entiti berikut bernama Pelanggan.

Pelanggan kelas

    {

        id int awam {dapatkan; menetapkan; }

        rentetan awam FirstName {get; menetapkan; }

        rentetan umum LastName {get; menetapkan; }

        rentetan awam Alamat {get; menetapkan; }

        rentetan awam Bandar {get; menetapkan; }

        rentetan awam Negeri {get; menetapkan; }

        rentetan awam Negara {get; menetapkan; }

    }

Seterusnya, buat senarai pelanggan dan simpan objek jenis Pelanggan ke dalamnya.

 Senarai custList = Senarai baru ();

            custList.Add (Pelanggan baru {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", City = "Hyderabad", Alamat = "Begumpet", Negara = "India"});

            custList.Add (Pelanggan baru {Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", City = "New York", Alamat = "Lake Avenue", Negara = "US"}) ;

Berikut adalah senarai kod lengkap yang menunjukkan bagaimana kita dapat menggunakan perwakilan Predicate untuk mencari data.

static void Main(string[] args)

        {

            List custList = new List();

            custList.Add(new Customer { Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", City = "Hyderabad", Address = "Begumpet", Country = "India" });

            custList.Add(new Customer { Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", City = "New York", Address = "Lake Avenue", Country = "US" });

            Predicate hydCustomers = x => x.Id == 1;

            Customer customer = custList.Find(hydCustomers);

            Console.WriteLine(customer.FirstName);

            Console.Read();

        }

When the above code snippet is executed, the name “Joydip” will be displayed in the console window.

Cara melakukan lebih banyak perkara di C #:

  • Bilakah menggunakan kelas abstrak vs antara muka dalam C #
  • Cara bekerja dengan AutoMapper di C #
  • Cara menggunakan ungkapan lambda dalam C #
  • Cara bekerjasama dengan delegasi Action, Func, dan Predicate di C #
  • Cara bekerja dengan perwakilan di C #
  • Cara melaksanakan pembalak sederhana di C #
  • Cara bekerja dengan atribut di C #
  • Cara bekerja dengan log4net di C #
  • Cara melaksanakan corak reka bentuk repositori di C #
  • Cara bekerja dengan refleksi di C #
  • Cara bekerja dengan pemantau sistem fail di C #
  • Cara melakukan inisial malas di C #
  • Cara bekerja dengan MSMQ di C #
  • Cara bekerja dengan kaedah peluasan di C #
  • Bagaimana untuk kami ungkapan lambda dalam C #
  • Bilakah menggunakan kata kunci tidak stabil dalam C #
  • Cara menggunakan kata kunci hasil dalam C #
  • Cara melaksanakan polimorfisme dalam C #
  • Bagaimana membina penjadual tugas anda sendiri di C #
  • Cara bekerja dengan RabbitMQ di C #
  • Cara bekerja dengan tuple di C #
  • Meneroka kaedah maya dan abstrak dalam C #