Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 54151|Svar: 3

[Kilde] .NET/C# Refleksion, Emitter, Udtrykspræstationstest

[Kopier link]
Opslået den 21-3-2021 13:23:34 | | | |
Gennemgang af artikler om refleksioner:

.net/c# udnytter reflection dynamic execution-metoden
https://www.itsvse.com/thread-4771-1-1.html

C# bruger refleksion til at afgøre, om en egenskab tildeles
https://www.itsvse.com/thread-3045-1-1.html

C#-refleksionen får displaynavnet på objektegenskaben
https://www.itsvse.com/thread-3219-1-1.html
Om EMIT-anmeldelsen:

.NET/C# Emitterer dynamisk samlinger
https://www.itsvse.com/thread-9597-1-1.html
Først opretter du et simpelt objekt, instansierer objektet, og bruger emit og udtryk til at læse og ændre objektets værdi, og du kan se, at eksekveringsresultatet er som forventet, som vist i figuren nedenfor:



Benchmark med BenchmarkDotNet til benchmarking, kun læsning af objektværdier til test, kørende på Net472 og NetCoreApp31, testresultaterne er som følger:


.NET/C# bruger BenchmarkDotNet til at teste kodeydelse
https://www.itsvse.com/thread-9576-1-1.html


Resumé:

Både emit og udtryk er mere effektive end at bruge refleksion til at hente værdier, og under .NET 4.7.2-rammen er emit bedre end udtryksudførelseseffektivitet, men under .NET Core 3.1-rammen er udtryk bedre end emitt-udførelse.

Hvis dit program kun behøver at udføre et objekt dynamisk én gang, anbefales det at bruge reflection (der er trods alt ikke behov for at indkapsle igen eller oprette en delegeret), og hvis dit program skal udføre et objekt dynamisk flere gange, anbefales det at bruge emit eller expression, og selvfølgelig kræves yderligere indkapsling.

Testkoden er som følger:

Når man bruger Expression til at opnå objektværdier, rapporteres fejlen som følger:

Udtryk af typen 'System.Int32' kan ikke bruges til returtypen 'System.Object'
Jeg ved virkelig ikke, hvordan de her folk bruger det, de kan kun kopiere og indsætte!




Tidligere:.NET/C# Emitterer dynamisk samlinger
Næste:.NET Core kalder gRPC HTTP (ikke-TLS beskyttet) adressefejlløsninger
 Udlejer| Opslået den 28-4-2025 kl. 14:53:41 |
Brug Expression til at tildele værdier til objektegenskaber:


Kald:
 Udlejer| Opslået den 28-4-2025 15:32:51 |
.NET/C# Brug UnsafeAccessor til at ændre indholdet af skrivebeskyttede felter
https://www.itsvse.com/thread-10997-1-1.html
 Udlejer| Opslået den 28-4-2025 kl. 15:40:57 |
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com