Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

138
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda