Desenvolvimento - C#
Tipos de parâmetros no C#
Este artigo mostra as quatro formas diferentes de passar parâmetros no C#.
por Equipe Linha de Código[modificador] TipoDeDado NomeDoParametro
Existem quatro diferentes formas de passar parâmetros para um método no C#, são eles:
- Value
- Out
- Ref
- Params
Parâmetro Value
Value é o tipo de parâmetro default no C#, ou seja se o parâmetro não tiver nenhum modificador ele é uma parâmetro value por default e seu valor real é passado para a função, o que significa que qualquer mudança no valor do parâmetro é feita localmente na função e não é passada de volta para o código que chamou a função.
Veja um exemplo:
using System; class TesteValue { static void Metodo(int Param1) { Param1 = 100; // Aqui a saída será 100 Console.WriteLine("Valor em Metodo = " + Param1); } static void Main() { int valor = 5; Metodo(valor); // Aqui a saída será 5, perceba que o valor não foi modificado Console.WriteLine("Valor na Main = " + valor); Console.Read(); } }A saída no método Main será 5. Embora o valor do parâmetro Param1 tenha sido modificado dentro do método "Metodo", essa mudança não foi refletida na Main (que chamou o método), considerando que parâmetros value são somente de entrada.
Parâmetro Out
O parâmetro out é um parâmetro "emissor" somente, o que significa que seu valor somente é passado de uma função. O parâmetro out é criado precedendo o tipo de dado com o modificador out. Sempre que um parâmetro out é passado, somente a referência da variável é passada para a função.
using System; class TesteOut { static void Metodo(out int Param1) { Param1 = 100; Console.WriteLine("Valor em Metodo = " + Param1); } static void Main() { int valor = 5; Metodo(out valor); Console.WriteLine("Valor na Main = " + valor); Console.Read(); } }
A saída no exemplo acima no método Main será 100, uma vez que o valor do parâmetro out é passado de volta ao código chamador.
Perceba que o modificador out deve preceder o parâmetro que está sendo passado no código chamador do método.
Parâmetro Ref
Parâmetros ref são parâmetros de entrada e saída, o que significa que eles podem ser usados tanto para passar um valor para uma função ou receber de volta esse valor de uma função. Parâmetros ref são criados precedendo um tipo de dado com o modificador ref. Sempre que um parâmetro ref é passado é uma referência da variável que é passada para a função.
Vejamos um exemplo:
using System; class TesteRef { static void Metodo(ref int Param1) { Param1 = Param1 + 100; } static void Main() { int valor = 5; Metodo(ref valor); Console.WriteLine("Valor na Main = " + valor); Console.Read(); } }
A saída do exemplo acima será 105, uma vez que o parâmetro ref atua tanto como parâmetro de entrada, como de saída.
Perceba que o modificador ref deve preceder o parâmetro a ser passado pelo código chamador da função.
Parâmetro Params
O parâmetro params é muito útil, quando o número de argumentos a ser passado é variável. O parâmetro necessita ser um array unidimensional ou um jagged array.
Vejamos um exemplo:
using System; class TesteParams { static int Soma(params int[] Param1) { int val = 0; foreach(int P in Param1) { val = val + P; } return val; } static void Main() { Console.WriteLine(Soma(10, 20, 30)); Console.WriteLine(Soma(10, 20, 30, 40, 50)); Console.Read(); } }
A saída do programa acima será 60 e 150.
Perceba que o valor passado como um parâmetro params, pode ser uma lista de valores separada por vírgula ou um array unidimensional e que o parâmetro params é somente de entrada.