Rakstu pārskats par pārdomām:
Par EMIT pārskatu:
Pirmkārt, izveidojiet vienkāršu objektu, instancējiet objektu un izmantojiet izstarošanu un izteiksmi, lai lasītu un modificētu objekta vērtību, un jūs varat redzēt, ka izpildes rezultāts ir tāds, kā paredzēts, kā parādīts zemāk redzamajā attēlā:
Etalons, izmantojot BenchmarkDotNet salīdzinošai novērtēšanai, tikai objektu vērtību lasīšana testēšanai, darbojas Net472 un NetCoreApp31, testa rezultāti ir šādi:
Kopsavilkuma:
Gan izstarošana, gan izteiksme ir efektīvāka nekā atspoguļojuma izmantošana, lai iegūtu vērtības, un .NET 4.7.2 sistēmā izstarošana ir labāka nekā izteiksmes izpildes efektivitāte, bet .NET Core 3.1 sistēmā izteiksme ir labāka nekā izstarošanas izpilde.
Ja jūsu programmai ir nepieciešams dinamiski izpildīt objektu tikai vienu reizi, ieteicams izmantot atspoguļojumu (galu galā nav nepieciešams vēlreiz iekapsulēt vai izveidot pārstāvi), un, ja jūsu programmai ir nepieciešams dinamiski izpildīt objektu vairākas reizes, ieteicams izmantot izstarošanu vai izteiksmi, un, protams, ir nepieciešama papildu iekapsulēšana.
Testa kods ir šāds:
Izmantojot izteiksmi, lai iegūtu objekta vērtības, kļūda tiks ziņota šādi:
Tipa 'System.Int32' izteiksmi nevar izmantot atgrieztajam tipam 'System.Object' Es tiešām nezinu, kā šie cilvēki to izmanto, viņi zina tikai kopēt un ielīmēt!
|