Eu me deparei com várias instâncias do código C # como o seguinte:
public static int Foo(this MyClass arg)
Não consegui encontrar uma explicação sobre o que a this
palavra - chave significa neste caso. Alguma ideia?
c#
parameters
this
kpozin
fonte
fonte
Respostas:
Este é um método de extensão . Veja aqui uma explicação .
isso significa que você pode ligar
ao invés de
Isso permite a construção de interfaces fluentes, conforme indicado abaixo.
fonte
A publicação de Scott Gu citada no blog explica muito bem.
Para mim, a resposta para a pergunta está na seguinte declaração nesse post:
fonte
this
palavra - chave na assinatura do método. As outras respostas dizem apenas inútil "é um método de extensão". Eu nunca entendi completamente como os métodos de extensão "se ligam" aos tipos que eles estendem até ler esta resposta. Obrigado!Além da explicação de Preet Sangha: O
Intellisense exibe os métodos de extensão com uma seta azul (por exemplo, na frente de "Agregar <>"):
Você precisa de um
para que os métodos de extensão apareçam e estejam disponíveis, se estiverem em um espaço para nome diferente do código que os está usando.
fonte
Eles são métodos de extensão . Bem-vindo a todo um mundo fluente . :)
fonte
Eu mesmo aprendi isso outro dia: a palavra-chave this define que o método está sendo uma extensão da classe que o segue. Portanto, para o seu exemplo, o MyClass terá um novo método de extensão chamado Foo (que não aceita nenhum parâmetro e retorna um int; pode ser usado como em qualquer outro método público).
fonte
"this" estende a próxima classe na lista de parâmetros
Portanto, na assinatura do método abaixo "this" estende "String". Linha é passada para a função como um argumento normal para o método sequência estática pública [] SplitCsvLine (esta linha de sequência)
No exemplo acima, a classe "this" está estendendo a classe "String" incorporada.
fonte