Saya bekerja dengan Delegasi Aksi di C # dengan harapan bisa belajar lebih banyak tentang mereka dan berpikir di mana mereka mungkin berguna.
Adakah yang menggunakan Delegasi Aksi, dan jika demikian mengapa? atau bisakah Anda memberikan beberapa contoh yang mungkin bermanfaat?
Ini adalah contoh kecil yang menunjukkan manfaat dari delegasi Action
Perhatikan bahwa metode foreach mengulang koleksi nama dan mengeksekusi
print
metode terhadap masing-masing anggota koleksi. Ini sedikit perubahan paradigma bagi kami para pengembang C # saat kami bergerak ke arah gaya pemrograman yang lebih fungsional. (Untuk info lebih lanjut tentang ilmu komputer di baliknya baca ini: http://en.wikipedia.org/wiki/Map_(higher-order_function) .Sekarang jika Anda menggunakan C # 3 Anda dapat sedikit mempercantik ini dengan ekspresi lambda seperti:
sumber
Nah satu hal yang bisa Anda lakukan adalah jika Anda memiliki saklar:
Dan dengan kekuatan tindakan Anda dapat mengubah saklar itu menjadi kamus:
...
Atau Anda bisa mengambil ini lebih jauh:
....
Hanya beberapa contoh. Tentu saja penggunaan yang lebih jelas adalah metode ekstensi Linq.
sumber
Anda dapat menggunakan tindakan untuk penangan event pendek:
sumber
Saya menggunakan delegasi tindakan seperti ini dalam sebuah proyek sekali:
yang dilakukan adalah menyimpan tindakan (pemanggilan metode) terhadap jenis kontrol sehingga Anda dapat menghapus semua kontrol pada formulir kembali ke sana secara default.
sumber
Sebagai contoh bagaimana Aksi <> digunakan.
Console.WriteLine memiliki tanda tangan yang memuaskan
Action<string>
.Semoga ini membantu
sumber
Saya menggunakannya ketika saya berurusan dengan Panggilan Lintas Thread Ilegal Misalnya:
Saya harus memberikan kredit kepada pengguna Reed Copsey SO 65358 untuk solusinya. Pertanyaan lengkap saya dengan jawaban adalah SO Pertanyaan 2587930
sumber
Saya menggunakannya sebagai panggilan balik dalam event handler. Ketika saya meningkatkan acara, saya mengirimkan metode mengambil string parameter. Seperti inilah penampilan acara tersebut:
Metode:
Ini adalah deklarasi kelas dari acara Args:
Dengan cara ini saya dapat memanggil metode yang dilewatkan dari event handler dengan beberapa parameter untuk memperbarui data. Saya menggunakan ini untuk meminta beberapa informasi dari pengguna.
sumber
Kami menggunakan banyak fungsi delegasi Tindakan dalam pengujian. Ketika kita perlu membangun beberapa objek default dan kemudian perlu memodifikasinya. Saya membuat sedikit contoh. Untuk membangun objek orang default (John Doe) kita menggunakan
BuildPerson()
fungsi. Kemudian kami menambahkan Jane Doe juga, tetapi kami memodifikasi tanggal lahir dan nama serta tinggi badannya.sumber