Qual é a diferença entre as palavras-chave ref e out em C#?
Olá a todos! Comecei a estudar C# e me deparei com as palavras-chave `ref` e `out`. Eu entendo que ambas permitem modificar variáveis passadas dentro do método, mas não tenho clara a diferença entre elas.
Aqui está um exemplo que escrevi:
```csharp
public void TestRef(ref int x)
{
x = x * 2;
}
public void TestOut(out int x)
{
x = 10;
}
static void Main()
{
int a = 5;
int b; // Erro: variável não inicializada para out
TestRef(ref a);
Console.WriteLine(a); // Imprime 10
TestOut(out b);
Console.WriteLine(b); // Imprime 10
}
```
Percebi que com `out` não posso passar uma variável não inicializada sem erro, mas dentro do método eu a inicializo. Já com `ref` sou obrigado a inicializar a variável antes da chamada. Mas essa não é a única diferença, tenho certeza.
Talvez haja outras nuances? Por exemplo, como isso afeta a performance, ou existem regras sobre quando usar cada um? Ficarei grato por uma explicação detalhada com exemplos.
No answers yet.
Faça login para deixar uma resposta
Blogs