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?
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.