Bagaimana untuk Menukar Fungsi .NET kepada Ungkapan?
Menukar Fungsi .NET kepada .NET Expression>
Dalam .NET, ungkapan lambda boleh ditukar dengan mudah menjadi Expression<> menggunakan kelas Ekspresi. Walau bagaimanapun, mungkin terdapat keadaan di mana seseorang ingin menukar Func
Pertimbangkan kod berikut:
public void GimmeExpression(Expression<Func<T>> expression) { ((MemberExpression)expression.Body).Member.Name; // "DoStuff" } public void SomewhereElse() { GimmeExpression(() => thing.DoStuff()); }
Di sini, ungkapan lambda dihantar kepada kaedah GimmeExpression, yang mengekstrak nama kaedah dipanggil (DoStuff).
Sekarang, katakan kita ingin melakukan operasi yang serupa tetapi dalam konteks terhad:
public void ContainTheDanger(Func<T> dangerousCall) { try { dangerousCall(); } catch (Exception e) { // This next line does not work... Expression<Func<T>> DangerousExpression = dangerousCall; var nameOfDanger = ((MemberExpression)dangerousCall.Body).Member.Name; throw new DangerContainer( "Danger manifested while " + nameOfDanger, e); } } public void SomewhereElse() { ContainTheDanger(() => thing.CrossTheStreams()); }
Dalam kes ini, kami cuba menukar Fungsi Panggilan berbahaya
Cannot implicitly convert type 'System.Func<T>' to 'System.Linq.Expressions.Expression<System.Func<T>>'. An explicit cast does not resolve the situation.
Ini kerana Func
Menyahhimpun bahasa perantaraan (IL) dan membuat kesimpulan ungkapan asal mungkin membenarkan penukaran ini jika data yang diperlukan belum dioptimumkan. Walau bagaimanapun, ini adalah pendekatan yang kompleks dan mungkin tidak boleh dipercayai.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Fungsi .NET kepada Ungkapan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Gulc: Perpustakaan C dibina dari awal

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Penggunaan dan perkongsian frasa yang berbeza

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?
