Me he encontrado con varias instancias de código C # como el siguiente:
public static int Foo(this MyClass arg)
No he podido encontrar una explicación de lo que this
significa la palabra clave en este caso. Alguna idea?
c#
parameters
this
kpozin
fuente
fuente
Respuestas:
Este es un método de extensión . Ver aquí para una explicación .
significa que puedes llamar
más bien que
Esto permite la construcción de interfaces fluidas como se indica a continuación.
fuente
La publicación de blog citada de Scott Gu lo explica muy bien.
Para mí, la respuesta a la pregunta está en la siguiente declaración en esa publicación:
fuente
this
palabra clave en la firma del método. Las otras respuestas solo dicen inútilmente "es un método de extensión". Nunca entendí completamente cómo los métodos de extensión se "asocian" a los tipos que se extienden hasta leer esta respuesta. ¡Gracias!Además de la explicación de Preet Sangha:
Intellisense muestra los métodos de extensión con una flecha azul (por ejemplo, frente a "Agregado <>"):
Tu necesitas un
para que los métodos de extensión aparezcan y estén disponibles, si están en un espacio de nombres diferente del código que los usa.
fuente
Son métodos de extensión . Bienvenido a un mundo completamente nuevo y fluido . :)
fuente
Acabo de aprender esto el otro día: la palabra clave this define que el método ha sido una extensión de la clase que lo sigue. Entonces, para su ejemplo, MyClass tendrá un nuevo método de extensión llamado Foo (que no acepta ningún parámetro y devuelve un int; puede usarse como con cualquier otro método público).
fuente
"esto" extiende la siguiente clase en la lista de parámetros
Entonces, en la firma del método debajo de "this" se extiende "String". La línea se pasa a la función como un argumento normal al método. cadena estática pública [] SplitCsvLine (esta línea de cadena)
En el ejemplo anterior, esta clase "this" está extendiendo la clase integrada "String".
fuente