Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 54151|Svare: 3

[Kilde] .NET/C# Refleksjon, Emitt, Uttrykksytelsestesting

[Kopier lenke]
Publisert 21.03.2021 kl. 13:23:34 | | | |
Gjennomgang av artikler om refleksjoner:

.net/c# utnytter refleksjonsmetoden for dynamisk utførelse
https://www.itsvse.com/thread-4771-1-1.html

C# bruker refleksjon for å avgjøre om en egenskap tildeles
https://www.itsvse.com/thread-3045-1-1.html

C#-refleksjon får visningsnavnet til objektegenskapen
https://www.itsvse.com/thread-3219-1-1.html
Om EMIT-anmeldelsen:

.NET/C# Emitter dynamisk genererer samlinger
https://www.itsvse.com/thread-9597-1-1.html
Først, lag et enkelt objekt, instansier objektet, og bruk emit og uttrykk for å lese og endre objektets verdi, og du kan se at utførelsesresultatet er som forventet, som vist i figuren under:



Benchmark bruker BenchmarkDotNet for benchmarking, leser kun objektverdier for testing, kjører på Net472 og NetCoreApp31, testresultatene er som følger:


.NET/C# bruker BenchmarkDotNet for å teste kodeytelse
https://www.itsvse.com/thread-9576-1-1.html


Sammendrag:

Både emit og uttrykk er mer effektive enn å bruke refleksjon for å hente verdier, og under .NET 4.7.2-rammeverket er emitt bedre enn uttrykksutførelseseffektivitet, men under .NET Core 3.1-rammeverket er uttrykk bedre enn emitt-utførelse.

Hvis programmet ditt bare trenger å kjøre et objekt dynamisk én gang, anbefales det å bruke refleksjon (det er tross alt ikke nødvendig å kapsle inn igjen eller opprette en delegat), og hvis programmet ditt må kjøre et objekt dynamisk flere ganger, anbefales det å bruke emit eller uttrykk, og selvfølgelig kreves ytterligere innkapsling.

Testkoden er som følger:

Når man bruker Expression for å hente objektverdier, rapporteres feilen som følger:

Uttrykk av typen 'System.Int32' kan ikke brukes for returtypen 'System.Object'
Jeg skjønner virkelig ikke hvordan disse folkene bruker det, de kan bare kopiere og lime inn!




Foregående:.NET/C# Emitter dynamisk genererer samlinger
Neste:.NET Core kaller gRPC HTTP (ikke-TLS beskyttet) adressefeilløsninger
 Vert| Publisert 28.04.2025 kl. 14:53:41 |
Bruk Expression for å tildele verdier til objektegenskaper:


Ring:
 Vert| Publisert 28.04.2025 kl. 15:32:51 |
.NET/C# Bruk UnsafeAccessor for å endre innholdet i skrivebeskyttede felt
https://www.itsvse.com/thread-10997-1-1.html
 Vert| Publisert 28.04.2025 kl. 15:40:57 |
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com