Métodos de extensión de C#

Métodos de extensión de C#
El concepto de método de extensión se utiliza para insertar nuevos métodos en la clase ya presente en el programa. O puede permitirnos agregar algunas características de extensión sin editar el código fuente del tipo original. Esto evita el uso de la herencia y hace que el código sea complicado. ¿Cómo se puede acceder a estos métodos si los métodos de extensión están presentes en la nueva clase??

La respuesta a esta consulta radica en el uso de un parámetro de enlace. Estos se utilizan para unir la clase con las funciones recién creadas. Es una variable vacía que no contiene ningún valor; Simplemente actúa como una simple palabra clave. Siempre se declara en primer lugar en la lista de parámetros. Si está escrito que no sea en el lugar inicial, el compilador relevante dará un error. La palabra clave utilizada para el fin de enlace es 'esto'.

# Esta muestra s;

Todos los métodos de extensión siempre se declaran como estáticos, pero una vez que la unión ha ocurrido con la clase, estas funciones se vuelven no estáticas.

Ejemplo 1

Considere un programa simple de C Sharp en el que se definen tres funciones. Todas estas funciones contienen una consola simple.Declaración de escritura para mostrar el mensaje en las pantallas. Estos métodos son las funciones regulares como los programas simples que tienen.

# Public void m1 ()

Ahora queremos agregar extensiones a este programa existente. Las extensiones juegan un papel importante en agregar nuevas funciones en la clase sin usar la herencia. Además, podemos simplemente agregar una nueva clase sin editar la anterior. Agregaremos dos métodos de extensión a la muestra de clase. Las nuevas funciones se declararán en una nueva clase estática y se convertirán en parte de la clase de muestra existente. Este proceso se conoce como vinculación. Entonces se crea una nueva clase estática. Esta clase no tiene un enlace con la clase existente, ya que no se hereda de la clase abstracta o la clase ya existente.

Dentro de la clase, declaramos dos nuevas funciones estáticas. Estas funciones tienen las mismas declaraciones a mostrar. Mientras que la declaración de las funciones estáticas, en el parámetro, usamos la palabra clave 'esto' junto con el objeto de la clase de muestra. A 'esto' es un parámetro de enlace; No contiene ningún valor, pero solo se usa para vincular los métodos estáticos recién creados con el existente en la clase ya definido. Como queremos unir los métodos con la muestra de clase, la clase y el objeto se utilizan en argumentos para el propósito de enlace.

# Public static void m4 (esta muestra)

Del mismo modo, la segunda función también tomará esta palabra clave y el objeto de la clase. En la lista de parámetros, declaramos parámetros vinculantes siempre al inicio.

Esta función mostrará una declaración pasada a través del programa principal. Se declara una clase para el programa principal. Dentro del programa principal, crearemos un objeto para la clase de muestra, ya que hemos vinculado los nuevos métodos con la clase de muestra, por lo que se accederá a todos estos métodos a través del objeto de la clase de muestra. No hay necesidad de crear un objeto para la nueva clase.

# Muestra s = nueva muestra ();

El objeto de la clase se establece dinámicamente. Este objeto llamará a todas las funciones de ambas clases definidas por separado.

# S.M1 ();

Ejecutaremos el código fuente anterior en el terminal Ubuntu. Para este propósito, se necesitará un compilador, por lo que usamos MCS, y usaremos mono para ejecutar el archivo con la extensión de .exe.

Archivo de $ MCS.CS
$ MONO ARCHIVO.exe

Ejemplo 2

En este ejemplo, se crea una función booleana para comparar dos valores y devolver si el primer valor es mayor que el primero. Esta comparación se realiza en la clase de extensión declarada en un método de extensión. Después de declarar las bibliotecas, hemos utilizado directamente una clase única en la que se declara un método extendido.

Dentro de la clase, hemos tomado una función de tipo bool. Este booleano devolverá un valor único, 'verdadero' o 'falso' a la vez. Si se enviará el primer valor mayor de lo que 'verdadero'; de lo contrario, la respuesta será falsa. Este parámetro contiene el parámetro 'este' para unir la función extendida con las variables que le hemos enviado desde el programa principal. Mientras que dos variables del tipo de datos enteros también se declaran aquí para almacenar los valores. Se realizará la comparación entre estos dos números enteros, y el valor se devolverá.

Dentro del programa principal, se toma una variable de tipo entero y se le asigna un valor.

# Bool z = stri.MyExtensionMethod (200);

Aquí se declarará una variable de tipo bool para aceptar el valor devuelto de la función en una llamada de función. El objeto STRI se usa para llamar a la función. Esto tomará un valor en el parámetro. El segundo valor se le envía a través del objeto al llamar a la función.

Guardar el código y ejecutarlo; Verá que el primer valor fue más pequeño que el segundo, por lo que la respuesta es falsa.

Ejemplo 3

En este ejemplo de C Sharp, hemos utilizado un método de cadena incorporado para calcular la longitud de la cadena de entrada pasada hacia la función del programa principal. Se crea una clase estática. La palabra clave estática muestra que otra clase no puede heredarla. Dentro de esta clase estática, se declara un método estático. Este método encontrará la longitud total de la cadena. Entonces, el parámetro de método contendrá una variable de tipo de cadena para aceptar la cadena de entrada.

Se accede al método de longitud a través del objeto de la cadena. Ahora declara la función principal. Asignar un valor de cadena al tipo de datos de cadena.

# Int z = stri.extensionMethodName ();

Esta llamada de función retrocederá y la almacenará en la variable de tipo entero. Esta longitud se mostrará a través de esta variable más adelante con la ayuda del método WriteLine ().

Compilar el código y ejecutarlo. Verá que se usó una cadena de 10 caracteres en el programa.

Conclusión

Se utiliza un método de extensión en C Sharp para agregar una funcionalidad adicional al programa sin modificar el código existente una vez escrito. Esto se puede hacer utilizando una clase adicional con métodos extendidos. Sin embargo, estos métodos son parte de otra clase, pero se pueden vincular y acceder desde el objeto de la clase ya creada. Hemos utilizado algunos ejemplos básicos que han explicado la creación y el funcionamiento de los métodos extendidos. La palabra clave 'esto' juega un papel importante en los métodos de extensión vinculante con la clase. Usamos esta palabra clave en el parámetro de la función extendida.