Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

159
Views
Diferentes formas de llamar a un método de extensión en C#

Hola, tengo un servicio de enumeración simple en el que hay algunos métodos de extensión definidos

 public enum Service { //enum values .. } public static class ServiceExtensions { internal static string GetSomeCode(this Service service) { // Does something } //another extension method that calls GetSomeCode() internal static string GetSomeOtherData(this Service service) { // Look at the call for extension method here string code = GetSomeCode(service); } }

Sé que la sintaxis para llamar al método de extensión es similar a llamar a la función miembro para this tipo específico.

En el ejemplo anterior, debería ser como -

 string code = service.GetSomeCode();

Encontré un uso similar de la sintaxis en otros lugares del proyecto. Mi pregunta es si hay alguna diferencia entre ambas llamadas. Si no, ¿cuál debería preferir usar?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

No, no hay diferencia. Además, el último ( service.GetSomeCode() ) se convertirá al primero ( GetSomeCode(service) ) durante la compilación.

Si visitas sharplab.io y pegas allí el siguiente código:

 public enum Service { } public static class ServiceExtensions { internal static string GetSomeCode(this Service service) { return ""; } internal static string GetSomeOtherData(this Service service) { string code = service.GetSomeCode(); return code; } }

Luego verá que el código descompilado se verá así:

 using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; [assembly: Extension] [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] public enum Service { } [Extension] public static class ServiceExtensions { [Extension] internal static string GetSomeCode(Service service) { return ""; } [Extension] internal static string GetSomeOtherData(Service service) { return GetSomeCode(service); } }

Entonces, es solo un azúcar sintáctico.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!