Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menukar fungsi C# kepada ungkapan?
Menukar C# Func
Dalam C#, ungkapan lambda menyediakan cara yang mudah untuk mewakili fungsi ringan. Walaupun mudah untuk menukar lambda kepada Ungkapan
Cabaran
Walau bagaimanapun, penukaran langsung sedemikian tidak mungkin disebabkan oleh ralat masa kompilasi, seperti yang digambarkan dalam kod berikut :
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); } }
Ralat berpunca daripada fakta bahawa Func
Penghadan
Malangnya, tiada cara mudah untuk mencapai penukaran yang diingini. Percubaan untuk mendapatkan ungkapan asal daripada Func
Pendekatan Alternatif
Sebagai alternatif, seseorang boleh mempertimbangkan:
Walau bagaimanapun, pendekatan ini biasanya melibatkan kompleks dan terdedah kepada kesilapan teknik.
Kesimpulan
Menukar Fungsi
Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar fungsi C# kepada ungkapan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!