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



Parâmetros são meios de se passar valores para um método. A sintaxe de se passar parâmetros no C# é:

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

Equipe Linha de Código

Equipe Linha de Código