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

Delegasi adalah penunjuk fungsi tipe-aman yang bisa mereferensikan metode yang memiliki tanda tangan yang sama seperti delegasi. Delegasi digunakan untuk mendefinisikan metode callback dan mengimplementasikan penanganan event, dan mereka dideklarasikan menggunakan kata kunci "delegate". Anda bisa mendeklarasikan delegasi yang bisa muncul sendiri atau bahkan bersarang di dalam kelas.

Apa itu Delegasi Func and Action? Bagaimana mereka bisa digunakan?

Perbedaan mendasar antara delegasi Func dan Action adalah bahwa sementara yang pertama digunakan untuk delegasi yang mengembalikan nilai, yang terakhir dapat digunakan untuk delegasi yang Anda tidak memiliki nilai kembalian.

Func adalah delegasi yang menunjuk ke metode yang menerima satu atau lebih argumen dan mengembalikan nilai. Tindakan adalah delegasi yang menunjuk ke metode yang pada gilirannya menerima satu atau lebih argumen tetapi tidak mengembalikan nilai. Dengan kata lain, Anda harus menggunakan Action ketika delegasi Anda menunjuk ke metode yang mengembalikan void.

Predikat adalah delegasi yang menerima satu atau lebih parameter generik dan mengembalikan nilai Boolean - Anda dapat menganggapnya seperti Func. Delegasi predikat biasanya digunakan untuk melakukan operasi pencarian pada beberapa data berdasarkan sekumpulan kriteria.

Delegasi Programming Action di C #

Anda dapat memanfaatkan delegasi di C # untuk mengimplementasikan acara dan metode panggilan balik. Delegasi di C # mirip dengan penunjuk fungsi C ++, tetapi delegasi C # adalah tipe aman. Anda dapat meneruskan metode sebagai parameter ke delegasi untuk memungkinkan delegasi menunjuk ke metode.

Cuplikan kode berikut mengilustrasikan sintaks untuk menggunakan delegasi Tindakan.

Tindakan

Daftar kode berikut menunjukkan bagaimana Anda dapat menggunakan Delegasi tindakan. Potongan kode ini ketika dijalankan akan mencetak kata "Halo !!!" di jendela konsol.

static void Main (string [] args)

        {

            Aksi aksi = Aksi baru (Tampilan);

            action ("Halo !!!");

            Console.Read ();

        }

static void Display (pesan string)

        {

            Console.WriteLine (pesan);

        }

Delegasi Fungsi Pemrograman di C #

Sekarang mari kita pahami bagaimana kita dapat bekerja dengan delegasi Func di C #. Berikut adalah sintaks untuk delegasi Func.

Func

Potongan kode berikut menggambarkan bagaimana Anda dapat menggunakan delegasi Func di C #. Ini mencetak nilai Hra (dihitung sebagai 40% dari gaji pokok). Gaji pokok diberikan sebagai argumen.

static void Main (string [] args)

        {

            Func func = new Func (CalculateHra);

            Console.WriteLine (func (50000));

            Console.Read ();

        }

        CalculateHra ganda statis (int dasar)

        {

            kembali (ganda) (dasar * .4);

        }

Perhatikan bahwa parameter kedua dalam deklarasi delegasi Func dalam potongan kode yang diberikan sebelumnya mewakili tipe kembalian dari metode yang akan ditunjuk oleh delegasi. Dalam contoh ini, nilai Hra yang dihitung dikembalikan sebagai ganda.

Pemrograman Predikat delegasi di C #

Delegasi Predikat biasanya digunakan untuk mencari item dalam kumpulan atau sekumpulan data. Berikut adalah sintaks untuk delegasi Predikat.

Predikat

Perhatikan bahwa Predikat pada dasarnya setara dengan Func.

Pertimbangkan kelas entitas berikut bernama Pelanggan.

kelas Pelanggan

    {

        public int Id {get; set; }

        string publik FirstName {get; set; }

        string publik LastName {get; set; }

        public string Address {get; set; }

        public string City {get; set; }

        public string State {get; set; }

        string publik Negara {get; set; }

    }

Selanjutnya, buat daftar pelanggan dan simpan objek tipe Pelanggan ke dalamnya.

 Daftar custList = Daftar baru ();

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

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

Berikut ini adalah daftar kode lengkap yang menunjukkan bagaimana kita dapat menggunakan delegasi Predikat 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.

Bagaimana melakukan lebih banyak di C #:

  • Kapan menggunakan kelas abstrak vs. antarmuka di C #
  • Bagaimana bekerja dengan AutoMapper di C #
  • Cara menggunakan ekspresi lambda di C #
  • Cara bekerja dengan delegasi Action, Func, dan Predicate di C #
  • Bagaimana bekerja dengan delegasi di C #
  • Bagaimana menerapkan logger sederhana di C #
  • Bagaimana bekerja dengan atribut di C #
  • Bagaimana bekerja dengan log4net di C #
  • Bagaimana menerapkan pola desain repositori di C #
  • Bagaimana bekerja dengan refleksi di C #
  • Bagaimana bekerja dengan filesystemwatcher di C #
  • Bagaimana melakukan inisialisasi malas di C #
  • Bagaimana bekerja dengan MSMQ di C #
  • Bagaimana bekerja dengan metode ekstensi di C #
  • Bagaimana kami ekspresi lambda di C #
  • Kapan menggunakan kata kunci volatile di C #
  • Cara menggunakan kata kunci hasil di C #
  • Bagaimana menerapkan polimorfisme di C #
  • Cara membuat penjadwal tugas Anda sendiri di C #
  • Bagaimana bekerja dengan RabbitMQ di C #
  • Bagaimana bekerja dengan tupel di C #
  • Menjelajahi metode virtual dan abstrak di C #