Estava acompanhando um curso, mas especificamente quando falava em métodos de extensão, e vi a necessidade de estar passando argumentos com ref.
Porém, utilizando this também funciona.
Quando devo utilizar cada um e quais as diferenças entre eles?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Estava acompanhando um curso, mas especificamente quando falava em métodos de extensão, e vi a necessidade de estar passando argumentos com ref.
Porém, utilizando this também funciona.
Quando devo utilizar cada um e quais as diferenças entre eles?
Olá Mike
Em extensões, quando você usa this no primeiro parametro, você está usando o valor retornado do método que ele está fazendo a extensão. Você tem um método que retorna um inteiro:
int total = metodoSoma(2,3);
Você cria uma extensão que dobra esse valor: public static int DobraValor(this int value);
int total = metodoSoma(2,3).DobraValor();
O resultado seria 5 da soma + o valor dobrado e seu resultado seria 10.
Segue exemplo completo:
class Example
{
public static void Main()
{
int total = Soma(2, 3).DobraValor();
Console.WriteLine(total);
Console.ReadKey();
}
public static int Soma(int a,int b)
{
return a + b;
}
}
static class DobraValorExtension
{
public static int DobraValor(this int value)
{
return value * 2;
}
}Quanto ao ref no parametro, ele permite que se o valor do parâmetro for modificado dentro do metodo ele possa ser retornado. O parâmetro que usar ref precisa ser inicializado.
Exemplo:
int a=0;
Change(ref a);
Console.WriteLine(a); ==> valor igual a 10
// Veja que não peguei o valor pelo return do método e sim pelo próprio parâmetro.
private static void Change(ref int a)
{
a = 10;
}Espero ter ajudado.